2014-03-26 114 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 
    } 
相關問題