0

我正在創建一個我想實現導航的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); 
} 

回答

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(); 
     } 

    } 
0

你需要重寫你的活動onbackpressed方法,雖然fm.popBackStack的添加或更換片段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()代替()

+0

感謝兄弟的工作 – 2015-03-04 05:31:23