从android中的第一个包的第一个活动中杀死第二个包的第二个活动

时间:2014-01-21 12:09:14

标签: android

我有两个包:

  • com.surveydemo与SurveyDemoActivity;和
  • com.surveydemo.DroidPHP with HomeActivity。

我在SurveyDemoActivity中创建了一个退出按钮,点击此按钮后,它提示“你真的想退出”有两个选项:

  • “返回”
  • “跳槽”

当我点击返回时,它会转到SurveyDemoActivity,如果我点击退出则没有任何反应。

如果我点击退出按钮,我想完成两项活动(“SurveyDemoActivity”和“HomeActivity”)。我该怎么办?

任何帮助表示赞赏。

提前致谢。

3 个答案:

答案 0 :(得分:0)

您应该SurveyDemoActivity作为StartActivityForResult启动,以便用户点按quit并确认它,您可以设置相应的结果,在finish中调用HomeActivity也是。

答案 1 :(得分:0)

你可以:

1)定义RC_SURVEY = 3RESULT_QUIT = 33

2)使用startActivityForResult(intent, RC_SURVEY);

启动SurveyDemoActivity

3)关于“退出”,关闭SurveyDemoActivity:

    setResult(RESULT_QUIT);
    finish();

4)在HomeActivity的onActivityResult中检查结果和关闭父活动:

    if(request == RC_SURVEY && result == RESULT_QUIT)
        finish();

答案 2 :(得分:0)

您可以使用BroadcastReceiver,一旦用户点击退出按钮,发送广播就可以杀死该活动。

在第一个活动中:

BroadcastReceiver receiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        finish();
    }
};

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

    IntentFilter filter = new IntentFilter();
    filter.addAction(MainActivity2.CUSTOM_INTENT);
    registerReceiver(receiver, filter);
}

@Override
protected void onDestroy() {
    super.onDestroy();
    unregisterReceiver(receiver);
}

并在第二个活动中:

    public static final String CUSTOM_INTENT = "custom.intent.action.KILL";

    Button button = new Button(this);
    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent i = new Intent();
            i.setAction(CUSTOM_INTENT);
            sendBroadcast(i);
        }
    });