0

ナビゲーションを実装したいAndroidアプリを1つ作成しています。アクションバーのアップナビゲーションで前のフラグメントに移動したい。アプリケーションには、ナビゲーション ドロワーも含まれています。次のコードを実装しましたが、機能しません。前もって感謝します。主なアクティビティ コードは次のとおりです。

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

2 に答える 2

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

    }
于 2015-03-03T11:23:39.870 に答える
0

アクティビティの 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.popBackStack() の代わりに fm.popBackStackImmediate() を使用することもできます。

于 2015-03-03T10:16:19.050 に答える