我有很多活动。他们中的每一个都有一个意图,它指的是同一个活动。有没有办法找出哪个意图开始活动?
答案 0 :(得分:19)
尝试:
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
从每个活动中发送唯一键以识别从哪个活动意图接收
答案 1 :(得分:4)
您没有提供任何背景信息,因此这是一种通用方法。
在每个Intent类型中添加一个额外的内容,如唯一的int或String:
intent.putExtra("Source", "from BroadcastReceiver");
并使用:
String source = getIntent().getStringExtra("Source");
答案 2 :(得分:4)
我找到的解决方案并不涉及将数据从一个Activity传递到另一个Activity。
在您的通话活动中使用startActivityForResult启动活动:
ActivityCompat.startActivityForResult(this, new Intent(this, MyActivity.class), 0, null);
在被调用者活动中,您可以使用以下代码来检测调用活动。
if (getCallingActivity() != null) {
Log.d(TAG, getCallingActivity().getClassName());
}
希望这会有所帮助。欢呼声。