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

在主 Activity 的 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从每个 Activity 发送唯一密钥,以识别从哪个 Activity 接收意图

于 2012-07-17T19:36:20.840 回答
5

您没有提供任何上下文,因此这是一种通用方法。

在每个 Intent 类型中添加一个额外的内容,例如唯一的 int 或 String:

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

并使用:

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

我找到了一个不涉及将数据从一个 Activity 传递到另一个的解决方案。

在您的调用活动中使用 startActivityForResult 来启动活动:

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

在被调用者Activity中,可以使用以下代码来检测调用Activity。

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

希望这可以帮助。干杯。

于 2015-06-23T16:55:00.723 回答