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)
我该怎么办?
您可以利用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)