簡體   English   中英

如何設置主活動中顯示的默認片段?

[英]How to set a default fragment shown in the main activity?

所以我今天遇到了一個小問題。 我在我的應用程序中制作了一個底部導航視圖,單擊按鈕后,它會替換屏幕上的片段(並且效果很好!)。 但是剛剛啟動應用程序,並且沒有點擊任何按鈕,屏幕上沒有任何片段。 我已經意識到只有在單擊按鈕后才會顯示片段,並且我想要一個默認片段(kalkulatorFragment)。 我一直在努力以某種方式設置它,但沒有成功...

public class Main extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        BottomNavigationView navigation = (BottomNavigationView) findViewById(R.id.navigation);
        navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);
    }

    private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener
            = new BottomNavigationView.OnNavigationItemSelectedListener() {

    @Override
    public boolean onNavigationItemSelected(@NonNull MenuItem item) {
        FragmentManager fm = getFragmentManager();
        FragmentTransaction ft = fm.beginTransaction();

        kalkulatorFragment kalkulator_fragment = new kalkulatorFragment();
        wzoryFragment wzory_fragment = new wzoryFragment();
        definicjeFragment definicje_fragment = new definicjeFragment();

            switch (item.getItemId()) {
                case R.id.kalkulator:
                    ft.replace(android.R.id.content, kalkulator_fragment);
                    ft.commit();
                    return true;

                case R.id.wzory:
                    ft.replace(android.R.id.content, wzory_fragment);
                    ft.commit();
                    return true;

                case R.id.definicje:
                    ft.replace(android.R.id.content, definicje_fragment);
                    ft.commit();
                    return true;
            }
            return false;
        }
   

好的,我只是想通了。 我將 ft.replace 移至 onCreate() 方法,因此 kalkulatorFragment 將在創建 Activity 后立即顯示。

public class Main extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    kalkulatorFragment kalkulator_fragment = new kalkulatorFragment();
    FragmentManager fm = getFragmentManager();
    FragmentTransaction ft = fm.beginTransaction();

    ft.replace(android.R.id.content, kalkulator_fragment);
    ft.commit();

    BottomNavigationView navigation = (BottomNavigationView) findViewById(R.id.navigation);
    navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);
}

您需要在OnCreate方法之外使用此代碼:

navigation.setSelectedItemId(R.id.IdOFYourItemFromBottomNavigationMenuItems);

我不知道為什么,但它不會在 OnCreate 方法中工作。 您可以在 OnCreate 方法中聲明和初始化它,只是不能在那里設置默認項。

就我而言,我在 OnCreateOptionsMenu 中使用它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM