许多意图指的是同一个活动,如何知道它们中的哪一个正在启动该活动?

时间:2017-11-04 22:49:55

标签: android android-intent

我有四个活动(添加,查找,编辑和详细说明案例活动)。第一棵树用它们的意图来详细说明案例活动。如何知道他们中的哪一个启动了我的detailActivity以及如何将案例ID发送到detailActivity?

1 个答案:

答案 0 :(得分:0)

是的,多个活动可以引用相同的活动。你的问题是如何知道三个活动中的哪一个打开了共同的活动(第四个)。

第一种情况:(从添加活动到详细案例活动)

当你从添加到详细信息开始一个意图时,只需添加一个额外的字符串,告诉其他活动你来自哪里,就像那样

如果要打开(详细信息活动)

,请在(任何活动)中添加此代码
Intent intent=new Intent(add.this,detailcase.class);
//now add the extra

intent.putextra("from","any");

//edit: add your caseid here

 intent.putextra("caseid",caseid);

//open the activity
startActivity(intent);

直到现在我们开始了一个意图,它将打开任何一个详细信息,我们添加了一个额外的包含一个键:来自"来自"和一个值:"任何"。

现在对所有其他活动做同样的事情

第二种情况:(从查找活动到详细案例活动)

如果要打开(详细信息活动)

,请在(查找活动)中添加此代码
 Intent intent=new Intent(find.this,detailcase.class);
 //now add the extra

intent.putextra("from","find");

 //edit: add your caseid

 intent.putextra("caseid",caseid);

//open the activity
startActivity(intent);

第三种情况:(从编辑活动到详细案例活动)

如果要打开(详细信息活动)

,请在(编辑活动)中添加此代码
 Intent intent=new Intent(edit.this,detailcase.class);
 //now add the extra

 intent.putextra("from","edit");

  //edit: add your caseid

  intent.putextra("caseid",caseid);

 //open the activity
 startActivity(intent);

现在的诀窍是转到详细案例活动的Oncreate方法并添加此

private string comingfrom;

//edit: add these also
private int caseid;
private int caseid_any;
private int caseid_find;
private int caseid_edit; 

//in on create method do this

comingfrom=getIntent().getStringExtra("from");

//edit: add this also
caseid=getIntent().getIntExtra("caseid",0);//0 is just a default value don't worry 



//check now from where you came like that

if(comingfrom.equals("any")){

 //then you came from any

 //edit:
 caseid_any=caseid;   //this is caseid from any

}

if(coming from.equals("find")){

 //you came from find

 //edit:

 caseid_find=caseid;  //this is caseid from find

}

if(comingfrom.equals("edit")){

 //you came from edit

  //edit:

   caseid_edit=caseid;//this is caseid from edit

}

我们所做的只是获得"来自"的价值。 key,我们将它存储在一个名为from的变量中,最后我们检查了这个值,现在我们知道了它们来自哪里。

修改

当您看到此评论

时,请再次检查代码段
 //edit: ......

这意味着它被添加了。

这就是你如何从每个活动中传递caseid并知道它来自何处。