从退出的活动调用的应用程序

时间:2013-01-21 10:33:12

标签: android android-intent

我在我的应用程序中使用以下代码在用户单击按钮时退出该代码。这是工作。但问题是,当我再次打开应用程序时,它不会从主活动中启动。相反,它将从我退出的活动开始。

Intent i=new Intent();
i.setAction(Intent.ACTION_MAIN);
i.addCategory(Intent.CATEGORY_HOME);
FarmerDetails.this.startActivity(i);
finish();

完整代码:

public class FarmerDetails extends Activity {
Button ok,old,ok1,exit;


public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.labour); 
    ok=(Button)findViewById(R.id.button1);
    ok1=(Button)findViewById(R.id.button2);
    exit=(Button)findViewById(R.id.btn_exit);
    exit.setOnClickListener(new OnClickListener(){

        public void onClick(View v) {

            Intent i=new Intent();
            i.setAction(Intent.ACTION_MAIN);
            i.addCategory(Intent.CATEGORY_HOME);
            i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            FarmerDetails.this.startActivity(i);
            finish();

        }

    });
     ok1.setOnClickListener(new OnClickListener() {

         public void onClick(final View v) {
             Intent next=new Intent(FarmerDetails.this,Fetch.class);
             startActivity(next);




         }
     });   



     ok.setOnClickListener(new OnClickListener() {

         public void onClick(final View v) {
             Intent next=new Intent(FarmerDetails.this,newfarmer1.class);
             startActivity(next);




         }
     });   



}
public void onDestroy()
{
    System.gc();
    android.os.Process.killProcess(android.os.Process.myPid());
    super.onDestroy();
}

}

任何人都可以说出问题是什么以及如何避免?

我需要在退出后从主要活动启动应用程序。

2 个答案:

答案 0 :(得分:1)

我找到了答案。 当用户按下退出按钮时,它会加载应用程序启动时运行的第一个Activity,在我的情况下为“main”。

Intent i = new Intent(getApplicationContext(), main.class);
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
i.putExtra("EXIT", true);
startActivity(i);

以上代码清除除main之外的所有活动。 main是用户运行程序时引发的第一个活动。

然后将此代码放在main的onCreate中,以便在传递'Exit'消息时发出自解压的信号。

if (getIntent().getBooleanExtra("EXIT", false)) {
    finish();
}

答案 1 :(得分:0)

使用来自callerActivity A的startActivityForResult,同时启动此Activity B,然后在调用finish()setResult(someint)和onActivityResult之前,如果resultcode == someint  完成活动A等等。你需要破坏你的主要活动才能从主要活动重新启动