2013-01-21 41 views
1

當用戶單擊按鈕時,我在應用程序中使用了以下代碼以退出該應用程序。這是工作。但問題是,當我再次打開應用程序時,它不會從主要活動開始。相反,它將從我退出的活動開始。從已退出的活動調用的應用程序

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(); 
} 

} 

誰能告訴是什麼問題以及如何避免?

我需要在退出後從主要活動啓動應用程序。

+0

你從哪裏退出應用程序?發佈代碼 –

+0

現在編輯。請檢查 – user1954492

回答

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(); 
} 
0

使用來自callerActivity的startActivityForResult在開始此活動B並在調用finish()setResult(someint)和onActivityResult之前,如果結果代碼== someint 完成活動A等等。您需要銷燬您的主要活動重新從主要活動發起

+0

我已經試過了。同樣的問題 – user1954492

+0

ohkk明確的頂部作品爲同一種活動..你需要做的是startActivityforResult你從哪個開始這個活動..並在完成setResult這將被接收mainActivity並完成你的主要活動以及 – sheetal

+0

直到你的mainActivity沒有完成,它仍然在Stack中,當你再次啓動應用程序時,它將顯示以前退出的活動。如果你想在應用程序啓動時啓動主要活動,我需要銷燬主要活動 – sheetal

相關問題