1

我试图在单击按钮时关闭应用程序。所以我在主页上使用以下代码

closebtn.setOnClickListener(new OnClickListener() 
        {

            @Override
            public void onClick(View v) 
            {
                // TODO Auto-generated method stub
                finish();
            }
        });

page5点击close button主页打开。

b5.setOnClickListener(new OnClickListener() 
        {

            @Override
            public void onClick(View v) 
            {
                // TODO Auto-generated method stub
                Intent i =new Intent(Page5.this, FirstPage.class);
                startActivity(i);
            }
        });

因此,当我单击主页中的关闭按钮时,它会再次转到第 5 页而不是关闭应用程序。

请帮我找出问题

提前致谢。

4

4 回答 4

2

finish()不关闭应用程序。它只关闭当前活动。所以在完成一个活动后,自然行为会回到活动堆栈的最后一个活动。

所以现在你有多种选择

  1. 在开始下一个活动之前完成上一个活动
  2. startactivityforresult 开始第二个活动。完成后,您可以在 onActivityResult 中完成。

还有其他可能的选择。

于 2013-06-25T08:21:04.383 回答
1

您添加以下代码以退出应用程序。

closebtn.setOnClickListener(new OnClickListener() 
{

       @Override
       public void onClick(View v) 
       {
           // TODO Auto-generated method stub

           Intent startMain = new Intent(Intent.ACTION_MAIN);
           startMain.addCategory(Intent.CATEGORY_HOME);
           startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
           startMain.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
           startActivity(startMain);
       }
});

通过在单击关闭按钮时使用此代码,您可以直接重定向到设备主屏幕。

于 2013-06-25T09:22:18.997 回答
1

尝试这个:

 b5.setOnClickListener(new OnClickListener() 
            {

                @Override
                public void onClick(View v) 
                {
                    // TODO Auto-generated method stub
                    Intent i =new Intent(Page5.this, FirstPage.class);
                    startActivity(i);
                    Page5.this.finish();
                }
            });
于 2013-06-25T08:20:02.463 回答
0

您需要清除顶部活动。也许你可以尝试这样的事情

假设在我们的应用程序中,我们有许多活动(比如十个),我们需要直接退出这个活动。我们可以做的是,创建一个意图并转到根活动并将意图中的标志设置为

intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

另外,在意图中添加一些额外的布尔值

intent.putExtra("EXIT", true);

然后在根活动中,检查布尔值并根据该调用完成(),在根活动的onCreate()中

if (getIntent().getBooleanExtra("EXIT", false)) {
 finish();
}
于 2013-06-25T08:22:10.777 回答