OnBackPressed()带回错误的活动

时间:2016-11-26 14:42:34

标签: android android-fragments

在我的Main_Activity中,我有一个按钮,当OnClicked打开新的Game_Activity时,在我的Game_Activity的OnCreate中我有:

  @Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_true_false);
    level1GameInstructions = new Level1GameInstructions();
    fragmentManager = getSupportFragmentManager();

    fragmentManager.beginTransaction().replace(R.id.game_activity, instructions).commit();
}

打开片段,然后在单击按钮时在Fragment类中,我想关闭当前片段,这样我就完成了这个:

View.OnClickListener playBtnListener = new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        getActivity().onBackPressed();
    }
};

但是,由于某种原因,这会返回Main_Activity而不是Game_Activity。有谁知道为什么?

1 个答案:

答案 0 :(得分:0)

很高兴使用这两种方法代替您的代码:

public void removeFragment(@NonNull String tag) {
    getSupportFragmentManager().beginTransaction().remove(getSupportFragmentManager().findFragmentByTag(tag)).commit();
}

public void replaceFragment(@IdRes int containerId, Fragment fragment, @Nullable String tag) {
    getSupportFragmentManager().beginTransaction().replace(containerId, fragment, tag).commit();
}

只需用一些标记替换所需的片段,然后通过该标记将其删除。