调用onBackPressed时,Android应用会关闭

时间:2013-07-16 22:07:40

标签: android

我的应用上有一个分享按钮。单击共享按钮时,将打开一个共享对话框,其中包含共享选项列表。问题是当我决定我不想分享(当对话框打开时)并按下手机上的后退按钮,应用程序关闭...我怎么能解决这个问题?我看不出问题

share.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View arg0) {
            dbControl = new DatabaseControl(ScoreMenu.this);
            dbControl.open();
            score = dbControl.fetchBestTime();
            dbControl.close();
            share(score);
        }
    });
}

public void share(String score){
    Intent shareIntent = new Intent(Intent.ACTION_SEND);
    shareIntent.setType("text/plain");
    shareIntent.putExtra(Intent.EXTRA_SUBJECT, "");
    shareIntent.putExtra(Intent.EXTRA_TEXT, "");
    startActivity(Intent.createChooser(shareIntent, ""));
}

@Override
public void onBackPressed() {
    Intent goToMainScreen = new Intent(ScoreMenu.this, MainActivity.class);
    if (android.os.Build.VERSION.SDK_INT >= 16) {
        // Start activity with a custom animation
        Bundle bundle_animation = ActivityOptions.makeCustomAnimation(ScoreMenu.this,      R.anim.slide_in_right, R.anim.slide_out_left).toBundle();
        startActivity(goToMainScreen, bundle_animation);
    }
    else {                     
        startActivity(goToMainScreen);
    }
}

希望你能帮忙......

3 个答案:

答案 0 :(得分:0)

关闭怎么样?你的意思是另一个活动到了前台吗?

通常,后退按钮会弹出任务堆栈顶部的最新活动。如果堆栈中有更多活动,则下一个活动将进入前台。如果不再,则控制将传递给上一个任务(上一个应用程序)。如果你从家里开始,你会回到家里。

这就是您的应用所发生的事情。由于当您为选择器调用startActivity()时,您没有构建自己的任务堆栈并返回到您的应用程序,因此您将开始一项新任务。当你“退回”时,你会将此任务弹出到主页,而不是回到你的应用程序。

答案 1 :(得分:0)

您使用的是

吗?
finish();

在致电您目前所在的活动后? (我猜是ScoreMenu。)

导致完成();在启动新活动时会杀死启动器活动。

答案 2 :(得分:0)

在share(String score)中调用startActivity后,会打开“共享”对话框,对吗?此时,如果用户按下后退按钮,对话框应该消失,您的活动(我认为ScoreMenu)将再次可见。这是默认行为,您无需覆盖onBackPressed即可拥有它。