片段中的向上导航
Up Navigation in fragment
我正在创建一个 android 应用程序,我想在其中实现向上导航。我想通过操作栏中的向上导航导航到上一个片段。应用程序还包含导航抽屉。我已经实现了以下代码,但它不起作用。
提前致谢。
主要 activity 代码如下。
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);
}
您需要重写 activity 的 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()
你可以试试这个。在 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();
}
}
我正在创建一个 android 应用程序,我想在其中实现向上导航。我想通过操作栏中的向上导航导航到上一个片段。应用程序还包含导航抽屉。我已经实现了以下代码,但它不起作用。 提前致谢。 主要 activity 代码如下。
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);
}
您需要重写 activity 的 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()
你可以试试这个。在 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();
}
}