哪项活动已启动此活动?

时间:2014-03-26 06:05:35

标签: android android-intent

在我的应用程序中,它们是一个活动C,可以通过两个活动启动。我怎样才能找到哪个活动已启动活动C ??这样我的活动就可以采取相应的行动。任何人都可以帮忙吗? 感谢。

7 个答案:

答案 0 :(得分:4)

试试这个..

<强> A.java

    Intent send = new Intent(A.this,C.class);
    send.putExtra("name", "A Activity");
    startActivity(send);

<强> B.java

    Intent send = new Intent(B.this,C.class);
    send.putExtra("name", "B Activity");
    startActivity(send);

<强> C.java

    if(getIntent().hasExtra("name")){
         String result = getIntent().getStringExtra("name");
         if(result.equals("A Activity")){
                //Do Someting
         }else if(result.equals("B Activity")){
                //Do Someting
         }
    }

答案 1 :(得分:1)

启动活动时,您可以从意图传递字符串。通过此字符串,您可以执行所需的操作。

Intent intent = new Intent(this, Activity.class);
intent.putExtra("name", "activityName");
startActivity();

答案 2 :(得分:0)

在activityA和activityB上使用Toast消息或日志消息。因此,通过这种方式,您可以知道哪个活动具有启动活动C.

例如

在activityA按钮的点击事件中使用以下代码。

Toast.makeText(getApplicationContext(), 
                               "Launched from A", Toast.LENGTH_LONG).show();

并在activityA按钮的点击事件中使用以下代码。

 Toast.makeText(getApplicationContext(), 
                                   "Launched from B", Toast.LENGTH_LONG).show();

修改

根据您的评论i want my activity to know so that i can take actions accordingly this,

你可以有一个像

这样的静态变量
public static int a = 0;

然后在每个活动中增加它并检查值,在activityA中设置为1,将activityB设置为2,然后检查条件,

if (a == 1){
// came from activityA
}else{
//came from activityB
}

答案 3 :(得分:0)

非常简单......使用Logcat或Toast或Sysout

日志

Log.w("myApp", "C activity Called")

吐司

Toast.makeText(getApplicationContext(), "C Activity is Called!!! =)",
   Toast.LENGTH_LONG).show();

SYSOUT

System.out.println("C Activity called");

答案 4 :(得分:0)

在用于启动活动C的意图中,添加了一个额外的数据,该数据将存储此活动C的启动位置。在活动C中,当它启动时获得额外的并相应地继续。

答案 5 :(得分:0)

按照下面给出的

A到C

Intent send = new Intent(A.this,C.class);
send.putExtra("FROM", "FROM_A");
startActivity(send);

B到C

Intent send = new Intent(B.this,C.class);
send.putExtra("FROM", "FROM_B");
startActivity(send);

终于在C.java

if(getIntent().hasExtra("FROM")){
     String result = getIntent.getStringExtra("FROM");
}

您也可以使用活动经理知道,尝试使用下面给出的内容

ActivityManager mngr = (ActivityManager) getSystemService( ACTIVITY_SERVICE );

List<ActivityManager.RunningTaskInfo> taskList = mngr.getRunningTasks(10);

if(taskList.get(0).numActivities == 1 &&
   taskList.get(0).topActivity.getClassName().equals(this.getClass().getName())) {
    Log.i(TAG, "This is last activity in the stack");
}

答案 6 :(得分:0)

您可以在intent中传递简单的String值,并在活动C中检查该活动已启动活动C的值。查看我的代码如下:

活动A

 Intent intentA = new Intent(ActivityA.this,ActivityC.class);
 intentA.putExtra("ActivityName", "ActivityA");
 startActivity(intentA);

活动B

 Intent intentB = new Intent(ActivityB.this,ActivityC.class);
 intentB.putExtra("ActivityName", "ActivityB");
 startActivity(intentB);

在您的活动C中检查以下值:

String activityName=getIntent().getStringExtra("ActivityName");
if(activityName.equalsIgnoreCase("ActivityA"))
   {
      //your logic
  }
else if(activityName.equalsIgnoreCase("ActivityB"))
  {
     // your logic 
  }