createDialog для onBackPressed, но мое приложение показывает ошибку закрыть приложение - PullRequest
0 голосов
/ 11 июня 2018

Я создал новое имя макета dialog_exit для onBackPressed, но когда я устанавливаю и открываю, мое приложение не может открыться и показывает ошибку закрыть приложение Пожалуйста, просмотрите весь мой код и объясните мне, как я могу решить эту проблему Вот мой основной код активности

public class MainActivity extends AppCompatActivity {

    public Dialog mDialog;
    public Button mDialogyes, mDialogno;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        createDialog();
    }

    private void createDialog() {
        mDialog = new Dialog(this);
        mDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
        mDialog.setContentView(R.layout.dialog_exit);
        mDialog.setCanceledOnTouchOutside(true);
        mDialog.setCancelable(true);
        mDialogyes = (Button) findViewById(R.id.yes);
        mDialogno = (Button) findViewById(R.id.no);

        mDialogyes.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(Intent.ACTION_MAIN);
                intent.setFlags(intent.FLAG_ACTIVITY_CLEAR_TOP);
                intent.addCategory(Intent.CATEGORY_HOME);
                startActivity(intent);
                finish();
                System.exit(0);

                mDialogno.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        mDialog.dismiss();
                    }
                });
            }

        });

    }
    @Override
    public void onBackPressed() {
        mDialog.show();
    }
}

Вот мой код компоновки в виде скриншота, потому что

stackoverflow не позволяет мне добавлять больше кода, поэтому обмениваться изображениями

Ответы [ 3 ]

0 голосов
/ 11 июня 2018

Вы должны сделать так

mDialogyes = (Button) mDialog.findViewById(R.id.yes);
mDialogno = (Button) mDialog.findViewById(R.id.no);
0 голосов
/ 11 июня 2018

Обновлен код функции createDialog

 private void createDialog() {
    mDialog = new Dialog(this);
    mDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
    mDialog.setContentView(R.layout.dialog_exit);
    mDialog.setCanceledOnTouchOutside(true);
    mDialog.setCancelable(true);
    mDialogyes = (Button) mDialog.findViewById(R.id.yes);
    mDialogno = (Button) mDialog.findViewById(R.id.no);

    mDialogyes.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(Intent.ACTION_MAIN);
            intent.setFlags(intent.FLAG_ACTIVITY_CLEAR_TOP);
            intent.addCategory(Intent.CATEGORY_HOME);
            startActivity(intent);
            finish();
            System.exit(0);

        }

    });

    mDialogno.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            mDialog.dismiss();
        }
    });

}
0 голосов
/ 11 июня 2018
try this code 
       mDialogyes = (Button)mDialogyes. findViewById(R.id.yes);
        mDialogno = (Button)mDialogyes. findViewById(R.id.no);

    mDialogyes.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(Intent.ACTION_MAIN);
                intent.setFlags(intent.FLAG_ACTIVITY_CLEAR_TOP);
                intent.addCategory(Intent.CATEGORY_HOME);
                startActivity(intent);
                finish();
                System.exit(0);


            }

        });

           mDialogno.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        mDialog.dismiss();
                    }
                });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...