我实现了一个底部导航,应该填充三个不同的Fragment类。 我的问题是,如果我启动活动,则不会显示第一个Fragment布局,只有当我转到tab2并返回到tab1时。 我认为这是LifeCycle的一个问题,但我不知道如何解决它。
我的底部处理导航的导航类:
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.navigation_home:
fragment = new RequestFragment();
break;
case R.id.navigation_dashboard:
fragment = new ResponseFragment();
break;
case R.id.navigation_notifications:
fragment = new LogfileFragment();
break;
}
final FragmentTransaction transaction = fragmentManager.beginTransaction();
transaction.replace(R.id.main_container, fragment).commit();
return true;
我的片段类:
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_request, container, false);
答案 0 :(得分:0)
你应该在活动开始时添加第一个片段。你只需在onNavigationItemSelected()方法上设置第一个片段,即使你单击导航视图也不会调用它。你应该在onCreate()方法中添加这些行:
fragment = new RequestFragment();
final FragmentTransaction transaction = fragmentManager.beginTransaction();
transaction.replace(R.id.main_container, fragment).commit();
答案 1 :(得分:0)
你必须在onCreate()方法中初始化片段。
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.your_activity);
...
fragment = new RequestFragment();
final FragmentTransaction transaction = fragmentManager.beginTransaction();
transaction.replace(R.id.main_container, fragment).commit();
}
这将在您的活动开始时在视图内的容器中显示该片段。保持你的onNavigationItemSelected方法不变。