Android 如何从活动移回导航抽屉

Android 如何从活动移回导航抽屉,android,fragment,Android,Fragment,首先,我创建了导航抽屉活动的应用程序,并从片段移动到新活动,现在我想在新活动上设置Home按钮,该按钮将导航到导航抽屉的主活动。我尝试使用以下代码: btnHome.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(add_activity

首先,我创建了导航抽屉活动的应用程序,并从片段移动到新活动,现在我想在新活动上设置Home按钮,该按钮将导航到导航抽屉的主活动。我尝试使用以下代码:

btnHome.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(add_activity.this,MainFragment.class);
                startActivity(intent);
                finish();

            }
        });

但是出现了一个错误,因为您的应用程序已停止

我们需要更多详细信息来帮助您。 我注意到的第一件事是这句话

Intent intent = new Intent(add_activity.this,MainFragment.class);
                startActivity(intent);
                finish();
这样做的问题是,您不能有目的地启动片段

如果要从MainActivity启动TravelActivity,请执行以下操作:

Intent intent = new Intent (this /*indicating your current activity*/, TravelActivity.class /*indicating Activity you want to start*/)
startActivity(intent); //start TravelActivity
finish() //finish current activity - if you press back you will exit the app (if MainActivity was launcher activity)
如果您有应该在旅行活动开始时加载的片段,下面是一个简单的帮助器方法,它将为您执行片段事务

public void replaceFragment(int rootViewId, Fragment fragment, boolean addToBackStack) {
    try {
        FragmentManager fragmentManager = getSupportFragmentManager();

        if (fragment == null)
            return;
        if (checkIfFragmentIsCurrent(fragment, rootViewId))
            return;

        String backStateName = fragment.getClass().getSimpleName();
        boolean fragmentPopped = fragmentManager.popBackStackImmediate(backStateName, 0);

        if (!fragmentPopped) {

            FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
            transaction.replace(rootViewId, fragment);

            if (addToBackStack) {
                transaction.addToBackStack(fragment.getClass().getSimpleName());
            }
            transaction.commit();
        }
    } catch (Exception e) {
        Log.e("ReplaceFragment", "Exception: " + e.getMessage());
    }
}

protected boolean checkIfFragmentIsCurrent(Fragment fragment, int placeHolderRes) {
    Fragment currentFragment = getSupportFragmentManager().findFragmentById(placeHolderRes);
    if (fragment != null && currentFragment != null) {
        if (fragment.getClass().equals(currentFragment.getClass())) {
            return true;
        }
    }
    return false;
}
为了使用这个函数,只需调用replacFragment(保存片段的容器ID,片段实例,true-如果您想将片段添加到backbackback中)


要了解片段事务,请参考此

包括日志猫!这里没有足够的信息,任何人都无法回答您的问题。自然任务后台排序应该让您返回吗?使用一个图表,或者你想要发生的事情的纹理流。好吧,忘掉这个错误。请告诉我从活动到导航抽屉需要什么类型的代码,上面的代码正确吗?