我有很多活动。他们每个人都有一个指向相同活动的意图。有没有办法找出启动活动的意图?
问问题
26999 次
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 回答