17

たくさんの活動があります。それらのそれぞれには、同じアクティビティを参照する意図があります。どのインテントが活動を開始したかを知る方法はありますか?

4

3 に答える 3

25

次のようにしてみてください:

Intent intent = new Intent();  
intent.setClass(A.this,Receiveractivity.class);
intent.putExtra("Uniqid","From_Activity_A");  
A.this.startActivity(intent);

Intent intent = new Intent();  
intent.setClass(B.this,Receiveractivity.class);
intent.putExtra("Uniqid","From_Activity_B");  
B.this.startActivity(intent);

Intent intent = new Intent();  
intent.setClass(C.this,Receiveractivity.class);
intent.putExtra("Uniqid","From_Activity_C");  
C.this.startActivity(intent);

およびメインアクティビティのonCreate:

//obtain  Intent Object send  from SenderActivity
 Intent intent = this.getIntent();

  /* Obtain String from Intent  */
        if(intent !=null)
        {
        String strdata = intent.getExtras().getString("Uniqid");
         if(strdata.equals("From_Activity_A"))
         {
         //Do Something here...
         }
         if(strdata.equals("From_Activity_B"))
         {
         //Do Something here...
         }
         if(strdata.equals("From_Activity_C"))
         {
         //Do Something here...
         }
         ........
        }
        else
        {
            //do something here
        }

putExtra各アクティビティから一意のキーを送信して、どのアクティビティインテントを受信したかを識別するために使用します

于 2012-07-17T19:36:20.840 に答える
5

コンテキストを提供しなかったので、ここに1つの一般的なアプローチがあります。

一意のintやStringのように、各Intentタイプに追加を追加します。

intent.putExtra("Source", "from BroadcastReceiver");

と使用:

String source = getIntent().getStringExtra("Source");
于 2012-07-17T19:35:03.603 に答える
4

あるアクティビティから別のアクティビティにデータを渡す必要のないソリューションを見つけました。

呼び出し元のアクティビティでstartActivityForResultを使用して、アクティビティを開始します。

ActivityCompat.startActivityForResult(this, new Intent(this, MyActivity.class), 0, null);

呼び出し先アクティビティでは、次のコードを使用して呼び出し元アクティビティを検出できます。

    if (getCallingActivity() != null) {
        Log.d(TAG, getCallingActivity().getClassName());
    }

お役に立てれば。乾杯。

于 2015-06-23T16:55:00.723 に答える