提问者:小点点

Android中的碎片或activity


我想知道我是否应该把下面的activity转换成一个片段?我必须为此做什么(如果你认为这是有用的)?我仍然没有真正理解为什么要使用碎片。

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.MenuItem;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import com.google.android.material.bottomnavigation.BottomNavigationView;
import com.google.android.material.bottomnavigation.BottomNavigationView.OnNavigationItemSelectedListener;

public class Selection_Softdrinks_Activity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_selection_softdrinks);
        BottomNavigationView bottomNav = findViewById(R.id.bottom_navigation);
        bottomNav.setOnNavigationItemSelectedListener(navListener);
    }

    private BottomNavigationView.OnNavigationItemSelectedListener navListener =
            new OnNavigationItemSelectedListener() {
                @Override
                public boolean onNavigationItemSelected(@NonNull MenuItem item) {
                    Activity selectedActivity = null;

                    switch (item.getItemId()) {
                        case R.id.nav_info:
                            Intent intent_Selection = new Intent(getApplicationContext(), Info_Activity.class);
                            startActivity(intent_Selection);
                            break;


                    }

                return true;
                }
            };
}

我将非常感谢您的每一个评论,并感谢您的帮助。


共2个答案

匿名用户

嗯。只要Android团队在导航组件上努力投资,使用碎片更好。

只是把主要的activity作为一个activity,其他的一切都作为一个碎片。

为了把你的activity转换成一个碎片,我只会把activity的遗产替换成碎片并解决问题。如果你自己去做,你会在如何使用碎片方面学得更好。

以下链接可能会对您有所帮助:

https://developer.android.com/guide/components/fragments?gclid=eaiaiqobchmil6bojr2d6wivwysrch1xoqrkeaayasaaegig0_d_bwe&gclsrc=aw.ds

匿名用户

根据谷歌最佳实践和建议,他们建议开发人员拥有一个包含多个片段的主activity,每个片段代表一个屏幕,当用户从一个屏幕导航到另一个屏幕时,您可以在片段之间切换到另一个片段。在你的情况下,让我们假设这是你的主人activity。在activity_selection_softdrinks中添加以下内容:

<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_above="@id/navigation_bar"
    android:id="@+id/container_frame"/>

返回到selection_softdrinks_activity.并执行以下操作:

BottomNavigationView.OnNavigationItemSelectedListener selectedListener =
        new BottomNavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {

                Fragment selectedFragment = null;

                switch (menuItem.getItemId()){

                    case R.id.nav_library:
                        selectedFragment = new LibraryFragment();
                        break;
                    case R.id.nav_my_music:
                        selectedFragment = new MyMusicFragment();
                        break;
                    case R.id.nav_search:
                        selectedFragment = new SearchFragment();
                        break;
                 
                }

                
                fragmentManager.beginTransaction()
                        .replace(containerFrame.getId(), selectedFragment)
                        .commit();

                return true;
            }
        };

其中LibraryFragment,MyMusicFragment,SearchFragment是您在前面已经创建的普通片段。