2012-02-13 69 views
3

我想檢索調用活動的名稱以檢查某些條件。將有什麼解決方案?如何獲取調用活動的名稱?

+0

通話活動是指? – 2012-02-13 09:57:41

+1

activity.class.getName()???如果您從活動中調用另一個活動,則可能需要將其名稱提供給一個Bundle,然後啓動該Intent。 – 2012-02-13 09:58:10

+0

我是否正確地理解了這個問題的答案,即我(作爲一項活動或作爲服務)在沒有來電者的合作的情況下無法找出誰(活動或服務)想要使用我? – k3b 2012-02-13 10:24:15

回答

3

可以使用Bundle

看一看這個例子發送活動之間的數據: http://www.balistupa.com/blog/2009/08/passing-data-or-parameter-to-another-activity-android/

基本上你需要把主叫方的名稱作爲參數:

Bundle bundle = new Bundle(); 
bundle.putString(this.class.getName(), 「ClassName」); 

Intent newIntent = new Intent(this.getApplicationContext(), ActivityClass2.class); 
newIntent.putExtras(bundle); 
startActivityForResult(newIntent, 0); 

而且在ActivityClass2中,您可以使用以下參數讀取該參數:

Bundle bundle = this.getIntent().getExtras(); 
String className = bundle.getString(「ClassName″); 
5

我想你甚至可以 getCallingActivity().getClassName()

1

第一步實現這一目標: 創建界面 - >右鍵你的項目 - >新建 - > JavaClass->類=接口

public interface ActivityConstants { 
    public static final int NameFromTheFirstActivity = 1001; 
    public static final int NameFromTheSecondActivity = 1002; 
    public static final int NameFromTheThirdActivity = 1003; 
} 

第二步: 進入每個活動(活動1或活動2或活動3)當你建立你的意圖調用ActivityFromWhereYouWantChooseTheAction(稱爲ActivityChooseAction),你需要把一個額外像... 到Activity1中寫下:

Intent intent = new Intent(getApplicationContext(), ActivityChooseAction.class); 
        intent.putExtra("calling-activity", ActivityConstants.NameFromTheFirstActivity); 
        startActivity(intent); 

進入活性2這樣寫:

Intent intent = new Intent(getApplicationContext(), ActivityChooseAction.class); 
        intent.putExtra("calling-activity", ActivityConstants.NameFromTheSecondActivity); 
        startActivity(intent); 

進入Activity3這樣寫:

Intent intent = new Intent(getApplicationContext(), ActivityChooseAction.class); 
       intent.putExtra("calling-activity", ActivityConstants.NameFromTheThirdActivity); 
       startActivity(intent); 

你可以進入你的ActivityChooseAction後,寫這樣的:

Public class ActivityChooseAction...{ 
String parametersharedtouseinthisactivity=""; 
... 
... 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activitychooseaction_layout); 
    mPreferences = getSharedPreferences("CurrentUser", MODE_PRIVATE); 
    int callingActivity = getIntent().getIntExtra("calling-activity", 0); 

     switch (callingActivity) { 
      case ActivityConstants.NameFromTheFirstActivity: 
//write your parameter....if u have saved it into preferences you can do like 
parametersharedtouseinthisactivity = mPreferences.getString("nameparameter", defaultvalueyouwant); 
       break; 
      case ActivityConstants.NameFromTheSecondActivity: 
parametersharedtouseinthisactivity = mPreferences.getString("nameparameter", defaultvalueyouwant); 
       break; 
      case ActivityConstants.NameFromTheThridActivity: 
parametersharedtouseinthisactivity = mPreferences.getString("nameparameter", defaultvalueyouwant); 
       break; 
     } 
} 

我希望這可以幫助某人,我跟着這裏的用戶說:how to know the calling activity in android