【问题标题】:Up Navigation in fragment在片段中向上导航
【发布时间】:2015-03-02 12:36:26
【问题描述】:

我正在创建一个要在其中实现向上导航的 android 应用程序。我想通过操作栏中的向上导航导航到上一个片段。应用程序还包含导航抽屉。我已经实现了以下代码,但它不起作用。 提前致谢。 主要活动代码如下。

public boolean onOptionsItemSelected(MenuItem item) {
// toggle nav drawer on selecting action bar app icon/title
if (mDrawerToggle.onOptionsItemSelected(item)) {
return true;
}

switch(item.getItemId())
{
case android.R.id.home:
FragmentManager fm=getFragmentManager();
if(fm.getBackStackEntryCount()>0)
{
fm.popBackStack();
}
else
{
onBackPressed();
}
return true;
default:
super.onOptionsItemSelected(item);
}
return super.onOptionsItemSelected(item);
}

片段代码如下。

@Override
public void onActivityCreated(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onActivityCreated(savedInstanceState);
MainActivity.mDrawerLayout.setVisibility(View.INVISIBLE);
MainActivity.mDrawerToggle.setDrawerIndicatorEnabled(false);
getActivity().getActionBar().setDisplayHomeAsUpEnabled(true);
getActivity().getActionBar().setHomeButtonEnabled(true);
}

【问题讨论】:

    标签: android android-fragments navigation-drawer android-fragmentactivity up-navigation


    【解决方案1】:

    你可以试试这个。在onbackPressed 中添加您的代码。如果 backStackCount 大于 0 则调用 popbackStack 否则将调用 finish() mwthod。

    @Override
        public void onBackPressed() {
            // TODO Auto-generated method stub
    //      super.onBackPressed();
            if(getSupportFragmentManager().getBackStackEntryCount()>0)
            {
                getSupportFragmentManager().popBackStack();
            }
            else
            {
                finish();
            }
    
        }
    

    【讨论】:

      【解决方案2】:

      您需要覆盖活动的 onbackpressed 方法,同时添加或替换片段 addtobackstack

          @Override
          public void onBackPressed() {
      
              if(getSupportFragmentManager().getBackStackEntryCount()!=0) {
                      super.onBackPressed();
                  }
                  else {
                      //anything like a toast message for exiting the app or activity
                  }
          }
      

      或者您甚至可以尝试使用 fm.popBackStackImmediate() 而不是 fm.popBackStack()

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-31
        • 1970-01-01
        • 1970-01-01
        • 2021-11-24
        相关资源
        最近更新 更多