假设我有3项活动,Activity A
,Activity B
和Activity C
。
活动A和活动B向活动C发送意图,并说明以下代码:
ActivityA发送意图:
Intent i = new Intent();
i.putExtra("ListName", s);
i.setClass(ActivityA.this, ActivityC.class);
startActivity(i);
ActivityB发送意图:
Intent i = new Intent();
i.putExtra("PersonName", s);
i.setClass(Activityb.this, ActivityC.class);
startActivity(i);
我如何在ActivityC中知道哪些Intent已被接收,因为每当调用ActivityC时,它将始终传递这行代码,用于ActivityA或ActivityB
if(getIntent() != null && getIntent().getExtras() != null)
然后在这行代码上给我NullPointerException
,如果意图是从ActivityB发送的
String s = getIntent().getStringExtra("ListName");
答案 0 :(得分:3)
再添加一个额外的Intent;
Intent i = new Intent();
i.putExtra("TAG",classname);
i.putExtra("key","value");
答案 1 :(得分:3)
在Intent中为类名添加额外的字段,
In ActivityA,
Intent i = new Intent();
i.putExtra("ListName", s);
i.putExtra("Class","A");
i.setClass(ActivityA.this, ActivityC.class);
startActivity(i);
在ActivityB中,
Intent i = new Intent();
i.putExtra("PersonName", s);
i.putExtra("Class","B");
i.setClass(Activityb.this, ActivityC.class);
startActivity(i);
在您的ActivityC中,检查标签“Class”
String className = getIntent().getStringExtra("Class");
if(className.equals("B"))
{
String s = getIntent().getStringExtra("ListName");
}
答案 2 :(得分:0)
所以这就是发生的事情:
假设活动C是由活动B启动的。是否存在与名为String s = getIntent().getStringExtra("ListName");
if( s != null ){
// do what you would do if activity B started activity C
}
的密钥相关联的字符串?不,因此空值。
那你如何区分这些活动呢?
一种方法是将一个字段放在intent extras中,告诉你它是哪个活动。
另一种方式是:
<c:if test='${firstNumber.matches(".*[0-9].*")}'>
答案 3 :(得分:0)
您需要使用调用活动的类名称
向intent添加一个额外值Intent intent = new Intent();
intent.setClass(A.this,MyActivity.class);
intent.putExtra("ClassName","A");
A.this.startActivity(intent);
Intent intent = new Intent();
intent.setClass(B.this,MyActivity.class);
intent.putExtra("ClassName","B");
B.this.startActivity(intent);
Intent intent = new Intent();
intent.setClass(C.this,MyActivity.class);
intent.putExtra("ClassName","C");
C.this.startActivity(intent);
然后在MyActivity的onCreate Method
中Intent intent = this.getIntent();
if(intent !=null)
{
String clsname= intent.getExtras().getString("ClassName");
if(clsname.equals("A"))
{
//Do Something here...
}
if(clsname.equals("B"))
{
//Do Something here...
}
if(clsname.equals("C"))
{
//Do Something here...
} }
}
else
{
//do something here
}