java - 按后退按钮可在 fragment 中查看

标签 java android android-fragments

我有一个 MainActivity,其中包含 2 个 fragment A 和 B。 fragment A 打开 fragment B。

fragment B 中有 4 个(a、b、c、d) View ,每个 View 加载相应的 xml。当我有 3 个观点 a、b、c 时 然后按后退按钮,我转到 fragment A,这很好。但是当我在 View “d”中并按后退按钮时,我必须转到 View “c” 而不是 fragment A。我怎样才能实现这个场景?

我的 MainActivity 有 onBackPressed() 方法,它看起来像这样 -

for (Fragment frag : fm.getFragments()) {

            if (frag != null && frag.isVisible()) {

                FragmentManager childFm = frag.getChildFragmentManager();

                if (childFm.getBackStackEntryCount() > 0) {

                    childFm.popBackStack();
                    return;
                    }
                }
        }

        if (fm.getBackStackEntryCount() > 1) {
            fm.popBackStack();
        } else {

            super.onBackPressed();

            finish();
        }

最佳答案

如果您需要实现此目的,您必须在 fragment 中监听新闻事件。

首先,创建一个用于后按回调的接口(interface)。

public interface BackPressListener {
    void onBackPressed();
}

其次,像这样配置您的 Activity 。

public class MainActivity extends AppCompatActivity {

    private BackPressListener backPressListener;

    public void setBackPressListener(BackPressListener backPressListener) {
        this.backPressListener = backPressListener;
    }

    @Override
    public void onBackPressed() {
        if (backPressListener != null)
            backPressListener.onBackPressed();
        else super.onBackPressed();
    }
}

第三,监听fragment中的后按事件。

public class MyFragment extends Fragment implements BackPressListener {

    @Override
    public void onAttach(Context context) {
        super.onAttach(context);
        if(context instanceof MainActivity)
            ((MainActivity) context).setBackPressListener(this);
    }

    @Override
    public void onBackPressed() {
        //handle your back press event here
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        if(getActivity() instanceof  MainActivity)
            ((MainActivity)getActivity()).setBackPressListener(null);
    }
}

关于java - 按后退按钮可在 fragment 中查看,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48210971/

相关文章:

java - 惰性初始化中的类构造函数

android - 在方向更改时处理多个可交换 fragment 的最佳方法

android - 如何不回收我的 recyclerview 或任何项目的前 2 个 View ?

c# - Xamarin 中的 Android 开发 - 错误

java - 类型参数 t 具有不兼容的上限 : view and fragment

blackberry - 是否可以将 swing/awt 与 blackberry/j2me 一起使用?

java - 在 ControllerAdvice 之前捕获反序列化异常

java - Java 中用户选择最小值和最大值的间隔

android - Xamarin (monodroid) + adMob 构建错误

Android 基本布局大小调整