Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在子活动中获取名称父活动_Android - Fatal编程技术网

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
属性,那么这个答案可能会有所帮助:。