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

}

誰かが問題とは何か、そしてどのように回避するかを教えてもらえますか?

終了後、メインアクティビティからアプリケーションを起動する必要があります。

4

2 に答える 2

1

私は答えを見つけました。ユーザーが終了ボタンを押すと、アプリの起動時に実行される最初のアクティビティ(私の場合は「メイン」)が読み込まれます。

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

上記のコードは、mainを除くすべてのアクティビティをクリアします。mainは、ユーザーがプログラムを実行したときに表示される最初のアクティビティです。

次に、このコードをメインのonCreate内に配置して、「Exit」メッセージが渡されたときに自己破壊するタイミングを通知します。

if (getIntent().getBooleanExtra("EXIT", false)) {
    finish();
}
于 2013-01-21T11:50:54.363 に答える
0

このアクティビティBを開始し、finish()setResult(someint)およびonActivityResult of Aを呼び出す前に、callerActivity AからstartActivityForResultを使用します(resultcode == someintがアクティビティAを終了する場合など)。メインから再起動するには、メインアクティビティを破棄する必要があります。アクティビティ

于 2013-01-21T10:46:01.377 に答える