Я реализовал диалог да/нет, который отображается при нажатии кнопки «Назад». если пользователь нажмет «да, я хочу уйти», приложение закрывается. все работает отлично в моем эмуляторе, однако, когда я установил приложение на свой телефон, при нажатии «да» приложение переходит на один шаг/действие назад и закрывается только тогда, когда оно проходит все изменения, которые я сделал в нем. Это происходит только с моей галактикой s4, и что самое интересное, у меня не было такой же проблемы, когда я установил приложение месяц назад на том же телефоне. Во всяком случае, вот код да нет диалога:super.finish() не закрывает приложение
public class YesNoDialog extends DialogFragment {
Button btnYes, btnNo;
static String dialogTitle;
public interface YesNoDialogListener {
void onFinishYesNoDialog(boolean state);
}
public YesNoDialog(){
}
public void setDialogTitle(String title){
dialogTitle = title;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_yes_no_dialog, container, false);
btnYes = (Button) view.findViewById(R.id.btnYes);
btnNo = (Button) view.findViewById(R.id.btnNo);
getDialog().setTitle(dialogTitle);
btnYes.setOnClickListener(btnListener);
btnNo.setOnClickListener(btnListener);
return view;
}
private View.OnClickListener btnListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
YesNoDialogListener activity = (YesNoDialogListener) getActivity();
String state = ((Button) v).getText().toString();
if (state.equals("Yes")) {
activity.onFinishYesNoDialog(true);
} else {
dismiss();
}
}
};
}
и MainActivity
:
@Override
public void onFinishYesNoDialog(boolean state) {
if (state){
super.finish();
}
}
private void showYesNoDialog() {
YesNoDialog yesNo = new YesNoDialog();
yesNo.setDialogTitle("Leaving Project Planner");
yesNo.show(mFragmentManager, "yes/no dialog");
}
public void onBackPressed() {
showYesNoDialog();
}
только называют 'отделка() ' –
nah, тот же про blem:/ –
'finish()' только закрывает Activity. Если в стеке истории есть другие действия, они не будут завершены, и один из них, вероятно, появится на экране. – Karakuri