Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/195.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 显示上一个片段_Android_Android Fragments_Back Button - Fatal编程技术网

Android 显示上一个片段

Android 显示上一个片段,android,android-fragments,back-button,Android,Android Fragments,Back Button,如何删除当前片段并显示以前的片段?就像我按下“后退”按钮一样 我使用这样的结构: FragmentManager fm=getFragmentManager(); FragmentTransaction ft=fm.beginTransaction(); ft.remove(fragment).commit(); 但它只删除当前片段,而不显示以前的您必须在添加片段的位置调用,然后在要删除片段时调用。在活动中添加此方法: @Override public boolean onKe

如何删除当前片段并显示以前的片段?就像我按下“后退”按钮一样

我使用这样的结构:

FragmentManager fm=getFragmentManager();
FragmentTransaction ft=fm.beginTransaction();
ft.remove(fragment).commit();

但它只删除当前片段,而不显示以前的

您必须在添加片段的位置调用,然后在要删除片段时调用。

在活动中添加此方法:

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event)  {
        if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
            if( this.getFragmentManager().getBackStackEntryCount() != 0 ){
                this.getFragmentManager().popBackStack();
                return true;
            }
            // If there are no fragments on stack perform the original back button event
        }

        return super.onKeyDown(keyCode, event);
    }
然后在更改片段的位置执行以下操作:

FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.replace(android.R.id.content, new YourFragmentName());
transaction.addToBackStack(null); // this is needed for the above code to work
transaction.commit();

尝试在删除后显示上一个片段:

  FragmentManager fm=getSupportFragmentManager();
  FragmentTransaction ft=fm.beginTransaction();
  ft.remove(fragment).commit();

  previousFragment=(SherlockFragment)getSupportFragmentManager()
    .findFragmentByTag(""+currentTagNum);
    getSupportFragmentManager().beginTransaction()
            .show(mFragment)
            .commit();

如果您这样做,就不必重写后退按钮的行为。当您回击时,可见片段将自动删除,并且backbackback中的下一个片段将自动显示。FragmentManager.popbackbackstack()重新加载片段。