5

最初のアクティビティから開きたいのですが、意図を持って最初のアクティビティを閉じたいです。これを試しましたが、受信機が機能しません。また、アプリケーションにはさまざまなレシーバーがあるため、このインテントを FirstReceiver からのみ受信したいと考えています。どうすればできますか?

public class First extends Activity 
{
    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_first);
        Intent close = new Intent(getApplicationContext(), Close.class);
        startActivity(close);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) 
    {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.first, menu);
        return true;
    }

    class FirstReceiver extends BroadcastReceiver 
    {
        @Override
        public void onReceive(Context context, Intent intent) 
        {
            Log.e("FirstReceiver","FirstReceiver");
            First.this.finish();
        }
    }
}

そして、これは2番目のクラスです。

public class Close extends Activity 
{
    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_close);
        Intent myIntent = new Intent();
        sendBroadcast(myIntent);
        Log.e("onCreate","onCreate");
        finish();
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) 
    {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.close, menu);
        return true;
    }
}
4

3 に答える 3

2

startActivityForResult,onActivityRsult() を使用することをお勧めします

 Intent in = new   Intent(getApplicationContext(), Close.class);
 startActivityForResult(in, RESULT_CLOSE);

onActivityResultそして、あなたをオーバーライドしてActivity、このように実装します..

protected void onActivityResult(int requestCode, int resultCode, Intent data) {  

super.onActivityResult(requestCode, resultCode, data);     

 if (requestCode == RESULT_CLOSE){

       finish();
     }

setResult()mainActivity を閉じたいときはいつでも in Close アクティビティを呼び出します。

于 2013-11-08T13:23:45.940 に答える
1

ユーザーが開いているすべてのアクティビティを終了したい場合は、アプリの起動時に実行される最初のアクティビティをロードするボタンを押す必要があります。私の場合は「閉じる」です。

Intent intent = new Intent(getApplicationContext(), Close.class);
intent.putExtra("EXIT", true);
startActivity(intent);

上記のコードは、Closeを除くすべてのアクティビティをクリアします。Closeは、ユーザーがプログラムを実行したときに起動される最初のアクティビティです。次に、このコードをCloseの onCreate 内に配置して、「Exit」メッセージが渡されたときに自己破壊する必要があることを通知します。

if (getIntent().getBooleanExtra("EXIT", false)) {
    finish();
}
于 2013-11-08T13:30:31.240 に答える