在Fragment中模拟返回栈

作者: wxyass 分类: Android 发布时间: 2016-03-28 15:22

在Fragment中模拟返回栈

在上一小节中 成功实现了向Activity中动态添加Fragment的功能.

不过你尝试一下就会发现,通过点击按钮添加了一个Fragment之后,这时按下 Back 键程序就会直接退出。

如果这里我们想模仿类似于返回栈的效果,按下 Back 键可以回到上一个Fragment,该如何实现呢?

其实很简单,FragmentTransaction 中提供了一个 addToBackStack()方法,可以用于将一个事务添加到返回栈中.

修改 MainActivity 中的代码

import android.app.Activity;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity implements OnClickListener {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button button = (Button) findViewById(R.id.button);
        button.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.button:
            AnotherRightFragment fragment = new AnotherRightFragment();
            FragmentManager fragmentManager = getFragmentManager();
            FragmentTransaction transaction = fragmentManager.beginTransaction();
            transaction.replace(R.id.right_layout, fragment);
            transaction.addToBackStack(null);
            transaction.commit();
            break;
        default:
            break;
        }
    }
}  

这里我们在事务提交之前调用了 FragmentTransaction 的 addToBackStack()方法,它可以接收一个名字用于描述返回栈的状态,一般传入 null 即可。
现在重新运行程序,并点击按钮将 AnotherRightFragment 添加到Activity中,然后按下 Back 键,你会发现程序并没有退出,而是回到了 RightFragment 界面,再次按下 Back 键程序才会退出。

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注