如何关闭android中的另一个活动后关闭主要活动?

时间:2015-10-17 17:11:42

标签: java android android-intent

我正在开发一个Android应用程序。所以在那里我有一个名为" Aboutus"的按钮。当我点击那个时,它会启动另一个活动并显示相应的视图。

以下是按钮关于点击事件的代码。

    aboutus.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
             Intent intent = new Intent(MainActivity.this,AboutUs.class);
             startActivity(intent);
        }

    });

}

然后在那个aboutus活动中我有后退按钮。当我们按下后退按钮时它将再次进入主活动。 后退按钮键事件就像这样......

    back.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            Intent intent = new Intent(AboutUs.this,MainActivity.class);
            intent.putExtra("aboutus", true);
            startActivity(intent);
            finish();
            System.exit(0);
        }

    });

这里我为其他目的添加了一些额外的意图。在这种情况下,它们并不重要。所以然后在mainactivity我有退出按钮。这应该杀死整个应用程序。

我的退出按钮代码就是这样。

exit.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
              finish();
              System.exit(0);
        }

    });
除了一个场景外,

退出按钮完美运行(它结束了应用程序)。如果我们点击aboutus并进入那个活动,然后按下关于该活动的后退按钮,然后再次回到主要活动,最后当我想要退出它不会杀死整个应用程序,而是再次进入关于活动。

总之, MainActivity --->点击aboutus按钮(这里没问题。这将启动aboutus活动)

关于----->点击后退按钮(这也可以。返回主要活动)

MainActivity - >退出按钮(不工作。再次进入aboutus活动)

那么如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

我不知道为什么你必须开始NSMutableURLRequest *request1 = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:URL]]; [request1 setHTTPMethod:@"GET"]; NSURLResponse *response; NSData *oResponseData = [NSURLConnection sendSynchronousRequest:request1 returningResponse:&response error:nil]; NSString *responseString = [[NSString alloc] initWithData:oResponseData encoding:NSUTF8StringEncoding]; NSLog(@"jsonData: %@", responseString); ...用户可以只按下后退按钮,只要它在活动堆栈上。 MainActivity.java也很糟糕。只需使用system.exit(0)优雅地完成应用即可  如果你想在aboutUS完成后将某些内容传递给活动,你可以查找finish()方法。

答案 1 :(得分:0)

使用意图标记ACTIVITY_CLEAR_TOP清除其上的所有活动:

            Intent intent = new Intent(AboutUs.this,MainActivity.class);
            intent.putExtra("aboutus", true);
            intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
            startActivity(intent);

FLAG_ACTIVITY_CLEAR_TOP来自doc:

  

如果设置,则正在启动的活动已在运行中   当前任务,然后而不是启动它的新实例   活动,其上的所有其他活动将被关闭   这个意图将作为一个传递到(现在在顶部)旧活动   新的意图。