如何在子活动中获取名称父活动

时间:2012-03-27 08:39:11

标签: android

如何在子活动中获取父活动的名称。我有两个活动,我可以开始相同的活动。为了更好地理解:我有活动一,二,三。从活动ONE我可以开始活动三,从活动二我可以开始活动三。现在我有一个问题。如何进入活动三,父母活动的名称。所以,当我从活动ONE开始活动三,我怎么能得到这些信息。我想实现简单的循环if(),其中我将对象添加到ArrayList,因为哪个活动启动我的活动三。我怎么能这样做?

7 个答案:

答案 0 :(得分:5)

像这样的东西

FirstActivity:

     Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
     intent.putExtra(Consts.PARENT_ACTIVITY_NAME, "ONE");
     ...
     startActivity(intent);

SecondActivity:

     Intent intent = getIntent();
     String parentName = intent.getStringExtra(Consts.EPARENT_ACTIVITY_NAME;
     if(parentName.equals(...)){ 
        ....
     }

但在我看来,最好不要使用活动的名称。稍后你会想要更改类的名称,添加新的等等。你将不得不进行大量的编辑,代码很难维护。最好进入操作模式,所有其他活动都会使您的活动进入特定模式。 所以:

FirstActivity:

     Intent intent = new Intent(FirstActivity.this, SomeActivity.class);
     intent.putExtra(Consts.PARENT_ACTIVITY_MODE, TwoActivity.MODE_EDIT);
     ...
     startActivity(intent);

SecondActivity:

     Intent intent = new Intent(SecondActivity.this, SomeActivity.class);
     intent.putExtra(Consts.PARENT_ACTIVITY_MODE, TwoActivity.MODE_DELETE);
     ...
     startActivity(intent);

ThirdActivity:

     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;
     }

答案 1 :(得分:3)

你应该额外加入启动那三项活动的意图。

intent.putExtra("prevActivity", "ONE");

阅读时这样做:

getIntent().getStringExtra("prevActivity");

答案 2 :(得分:2)

一种简单的方法是向您的意图添加一个上下文元素并传递活动的名称

Intent in = new Intent(One.this, Three.class);
in.putExtra("activity", "One");
startActivity(in);

然后在Three活动

this.getIntent().getExtras().getString("activity");

答案 3 :(得分:1)

只需在意图中传递一段可识别的数据......

答案 4 :(得分:1)

将您的活动名称放在意图中并将其传递给...但是从未尝试将其用于更新用户界面或其他东西,因为它处于暂停状态..它会抛出例外..

答案 5 :(得分:0)

您可以通过创建Interface作为Discused here来完成您的任务,或者您可以通过putExtra完成工作

Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
     intent.putExtra("PARENT_ACTIVITY_NAME", "ThisActivityName");
     startActivity(intent);

然后像孩子那样收到

String parentActivityName = intent.getStringExtra("PARENT_ACTIVITY_NAME");

答案 6 :(得分:0)

您也可以使用getIntent().getClass().getName()来抓取它。