【问题标题】:Android Application opens again after finishingAndroid应用程序完成后再次打开
【发布时间】:2014-05-03 08:03:45
【问题描述】:

在我的主菜单中,我尝试使用手机上的后退按钮和AlertDialog 完成应用程序。

这是我的代码:

    Button zumspiel;
    Button lineup;
    Button social;

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


        lineup = (Button) findViewById(R.id.btLineup);
        lineup.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                Intent lineup = new Intent(MainMenu.this, LineUp_Auswahl.class);
                startActivity(lineup);


            }
        });

        zumspiel = (Button) findViewById(R.id.btZumSpiel);
        zumspiel.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                Intent spiel = new Intent(MainMenu.this, VormSpiel.class);
                startActivity(spiel);

            }
        });




        social = (Button) findViewById(R.id.btSocial);
        social.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                Intent high = new Intent(MainMenu.this, SozialeMedien.class);
                startActivity(high);

            }
        });

    }

    @Override
    public void onBackPressed() {
        new AlertDialog.Builder(this)
            .setIcon(android.R.drawable.ic_dialog_alert)
            .setTitle("Wüstenfest App schließen")
            .setMessage("Bist du sicher dass du die App beenden möchtest?")
            .setPositiveButton("Ja!", new DialogInterface.OnClickListener()
        {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                android.os.Process.killProcess(android.os.Process.myPid());
                finish();    
            }

        })
        .setNegativeButton("Nein, natürlich nicht!", null)
        .show();
    }

现在我的问题是,当我在AlertDialog 上按Ja 时,当前的MainMenu 活动正在关闭,但会打开一个新活动。当我再次尝试退出这里时,它可以工作。我的方式有什么问题?

【问题讨论】:

    标签: android android-activity activity-finish


    【解决方案1】:

    不要这样做

    android.os.Process.killProcess(android.os.Process.myPid());
    

    当您的进程突然终止时,Android 会尝试重新创建它。如果您只想关闭 Activity,请致电 finish()super.onBackPressed()

    一般来说,您不需要显示退出对话框。用户已经对 BACK 应该做什么有了期望。

    【讨论】:

    • 感谢您的回答。我刚刚尝试了 killProcess,因为 finish() 导致了我上面写的同样的问题。
    • 如果您注释掉整个onBackPressed() 方法并按下回会发生什么?你的活动回来了吗?我想看看你的对话框代码是否对行为有任何影响,因为 BACK 的通常行为是完成 Activity。
    • 当我注释掉它时,它是同样的问题。我意识到这只是在我来自不同的活动时发生,当我启动和关闭应用程序时不会再次打开..
    • 也许有什么原因导致MainMenu 活动的另一个实例出现在历史堆栈中。尝试阅读此内容,看看是否有帮助:developer.android.com/guide/components/…
    猜你喜欢
    • 1970-01-01
    • 2018-10-29
    • 2012-05-23
    • 1970-01-01
    • 1970-01-01
    • 2011-01-17
    • 2013-12-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多