片段未显示活动开始

时间:2017-10-24 07:57:26

标签: android android-fragments

我实现了一个底部导航,应该填充三个不同的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);

2 个答案:

答案 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方法不变。