如何将片段设置为BottomNavigation的默认片段?

Ars*_*a13 2 java android android-fragments

我的MainActivity.java中有3个片段的底部导航。我想将片段之一设置为默认值,以在应用程序启动时自动打开。我怎样才能做到这一点?这是我的主要Activity.java:

public class MainActivity extends AppCompatActivity {
private static final String TAG = MainActivity.class.getSimpleName();
private BottomNavigationView bottomNavigation;
private Fragment fragment;
private android.support.v4.app.FragmentManager fragmentManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    bottomNavigation = (BottomNavigationView)findViewById(R.id.bottom_navigation);
    bottomNavigation.inflateMenu(R.menu.bottom_menu);
    fragmentManager = getSupportFragmentManager();



    bottomNavigation.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
        @Override
        public boolean onNavigationItemSelected(@NonNull MenuItem item) {
            Fragment selectedFragment = null;
            int id = item.getItemId();
            switch (id){
                case R.id.intros:
                    fragment = new IntrosFragment();
                    break;
                case R.id.menus:
                    fragment = new MenusFragment();
                    break;
                case R.id.infos:
                    fragment = new InfosFragment();
                    break;
            }
            FragmentTransaction transaction = fragmentManager.beginTransaction();
            transaction.replace(R.id.main_container, fragment).commit();
            return true;
        }
    });


}
}
Run Code Online (Sandbox Code Playgroud)

这是我的片段之一(它们都是一样的):

public class IntrosFragment extends Fragment {


public IntrosFragment() {

}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.fragment_intro, container, false);
    // Inflate the layout for this fragment
    TextView txt = (TextView) rootView.findViewById(R.id.introtv);
    Typeface font = Typeface.createFromAsset(getActivity().getAssets(), "fonts/naskh.ttf");
    txt.setTypeface(font);

    return rootView;
}
}
Run Code Online (Sandbox Code Playgroud)

我该怎么办?

Ben*_* P. 6

您可以利用savedInstanceState第一次创建活动时为null 的事实来仅在首次启动时执行代码。然后,您可以使用设置要选择的任何导航项目setSelectedItemId()

请注意,这setSelectedItemId()将触发您OnNavigationItemSelectedListener,因此您应在致电之后放置此代码setOnNavigationItemSelectedListener()

    if (savedInstanceState == null) {
        bottomNavigation.setSelectedItemId(R.id.infos); // change to whichever id should be default
    }
Run Code Online (Sandbox Code Playgroud)