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