2016-11-26 2 views
-3

В моей Main_Activity, у меня есть кнопка, которая при OnClicked открывает новый Game_Activity, в OnCreate моего Game_Activity у меня есть:OnBackPressed() возвращает некорректную активность

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

Который открывает фрагмент, затем в пределах Фрагмент класс, когда кнопка нажата, я хочу, чтобы закрыть текущий фрагмент открыты, так что я сделал это:

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

Однако, по какой-то причине это возвращает Main_Activity, а не Game_Activity. Кто-нибудь знает, почему?

+0

'getActivity(). OnBackPressed()' точно так же, как 'getActivity(). Finish()' в вашем случае. Никогда не делайте этого так. –

+0

Проверьте, установлен ли 'android: parentActivityName' в файле манифеста. –

+0

@RomanSamoylenko Итак, какой был бы лучший способ добиться того, что я пытаюсь сделать? – KTOV

ответ

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

Просто замените нужный фрагмент с каким-то тегом, и удалить его с помощью этого тега.

Смежные вопросы