2014-03-26 84 views
-1

在我的应用程序中,他们是一项活动C,可以通过两项活动启动。我怎样才能找到哪个活动启动活动C?所以我的活动可以采取相应的行动。任何人都可以帮忙。? 谢谢。哪项活动启动了此活动?

回答

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

在activityA和activityB上使用Toast消息或日志消息。所以从这种方式你可以知道哪个活动有启动activityC。

例如。

在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此,

,你可以有一个像

public static int a = 0; 

一个静态变量,然后在每个活动增加,并检查该值,在activityA中设置为1,在activityB中设置为2,然后检查条件,

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

不,我希望我的活动知道以便我可以采取相应的行动 –

+0

@VarunAjayGupta查看我的答案。 – GrIsHu

1

您可以在启动活动时从意图传递字符串。从这个字符串你可以执行你想要的动作。

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

这很简单...使用的logcat或吐司或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"); 
0

在你用来启动你的活动的意图中,C把一个额外的数据存储在这个活动C被启动的地方。在活动C启动时获得额外费用并据此进行。

0

只是按照下面

给定至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"); 
} 
0

给出你可以在意图通过简单String价值并为您在活动Ç该值,对于这个活动已经启动活动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 
    } 
相关问题