Android 如何在子活动中获取名称父活动
如何在子活动中获取父活动的名称。我有两个活动可以开始相同的活动。为了更好地理解:我有活动一、二、三。从活动一开始,我可以开始活动三,从活动二开始,我可以开始活动三。现在我有一个问题。如何进入活动三,父活动的名称。所以,当我从活动一开始活动三时,我如何获得这些信息。我想实现一个简单的循环Android 如何在子活动中获取名称父活动,android,Android,如何在子活动中获取父活动的名称。我有两个活动可以开始相同的活动。为了更好地理解:我有活动一、二、三。从活动一开始,我可以开始活动三,从活动二开始,我可以开始活动三。现在我有一个问题。如何进入活动三,父活动的名称。所以,当我从活动一开始活动三时,我如何获得这些信息。我想实现一个简单的循环if(),在这里我将对象添加到ArrayList中,因为该活动启动了我的活动三。我该怎么做呢?只需在intent中传递一段可识别的数据…将您的活动名称放入intent中,然后传递它。。。但千万不要试图用它来更新UI
if()
,在这里我将对象添加到ArrayList中,因为该活动启动了我的活动三。我该怎么做呢?只需在intent中传递一段可识别的数据…将您的活动名称放入intent中,然后传递它。。。但千万不要试图用它来更新UI,因为它处于暂停状态。。它将引发异常。您应该在启动这三个活动的意图中添加一个额外的内容
intent.putExtra("prevActivity", "ONE");
阅读时,请执行以下操作:
getIntent().getStringExtra("prevActivity");
一种简单的方法是在意图中添加上下文元素并传递活动名称
Intent in = new Intent(One.this, Three.class);
in.putExtra("activity", "One");
startActivity(in);
然后在Three
活动中
this.getIntent().getExtras().getString("activity");
像这样的
第一项活动:
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
intent.putExtra(Consts.PARENT_ACTIVITY_NAME, "ONE");
...
startActivity(intent);
Intent intent = new Intent(FirstActivity.this, SomeActivity.class);
intent.putExtra(Consts.PARENT_ACTIVITY_MODE, TwoActivity.MODE_EDIT);
...
startActivity(intent);
第二项活动:
Intent intent = getIntent();
String parentName = intent.getStringExtra(Consts.EPARENT_ACTIVITY_NAME;
if(parentName.equals(...)){
....
}
Intent intent = new Intent(SecondActivity.this, SomeActivity.class);
intent.putExtra(Consts.PARENT_ACTIVITY_MODE, TwoActivity.MODE_DELETE);
...
startActivity(intent);
Intent intent = new Intent(ThirdActivity.this, SomeActivity.class);
intent.putExtra(Consts.PARENT_ACTIVITY_MODE, TwoActivity.MODE_COPY);
...
startActivity(intent);
但在我看来,最好不要使用活动的名称。稍后您将需要更改类的名称,添加新的,等等。您将不得不进行大量编辑,并且代码很难维护。最好进入操作模式,所有其他活动都会导致您的活动进入特定模式。
因此:
第一项活动:
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
intent.putExtra(Consts.PARENT_ACTIVITY_NAME, "ONE");
...
startActivity(intent);
Intent intent = new Intent(FirstActivity.this, SomeActivity.class);
intent.putExtra(Consts.PARENT_ACTIVITY_MODE, TwoActivity.MODE_EDIT);
...
startActivity(intent);
第二项活动:
Intent intent = getIntent();
String parentName = intent.getStringExtra(Consts.EPARENT_ACTIVITY_NAME;
if(parentName.equals(...)){
....
}
Intent intent = new Intent(SecondActivity.this, SomeActivity.class);
intent.putExtra(Consts.PARENT_ACTIVITY_MODE, TwoActivity.MODE_DELETE);
...
startActivity(intent);
Intent intent = new Intent(ThirdActivity.this, SomeActivity.class);
intent.putExtra(Consts.PARENT_ACTIVITY_MODE, TwoActivity.MODE_COPY);
...
startActivity(intent);
第三十届:
Intent intent = getIntent();
String parentName = intent.getStringExtra(Consts.EPARENT_ACTIVITY_NAME;
if(parentName.equals(...)){
....
}
Intent intent = new Intent(SecondActivity.this, SomeActivity.class);
intent.putExtra(Consts.PARENT_ACTIVITY_MODE, TwoActivity.MODE_DELETE);
...
startActivity(intent);
Intent intent = new Intent(ThirdActivity.this, SomeActivity.class);
intent.putExtra(Consts.PARENT_ACTIVITY_MODE, TwoActivity.MODE_COPY);
...
startActivity(intent);
一些活动:
Intent intent = getIntent();
int mode = intent.getIntExtra(Consts.EPARENT_ACTIVITY_MODE);
switch(mode){
case MODE_EDIT:
....
break;
case MODE_DELETE:
....
break;
case MODE_COPY:
....
break;
}
您可以通过创建
接口as来完成任务,也可以通过putExtra as来完成任务
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
intent.putExtra("PARENT_ACTIVITY_NAME", "ThisActivityName");
startActivity(intent);
然后像孩子一样接受
String parentActivityName = intent.getStringExtra("PARENT_ACTIVITY_NAME");
您还可以使用getIntent().getClass().getName()
来获取它。如果您正在清单中使用android:parentActivityName
属性,那么这个答案可能会有所帮助:。