2014-10-30 50 views
4

我想在我的意圖傳遞我的活動指針,但我不知道如何檢索它。從Android的意圖檢索調用活動

我有下面的代碼片段呼叫活動(MyActivity):

Intent myServiceIntent = new Intent(this, myService.class); 
startService(myServiceIntent); 

在我的服務類我想要檢索調用活動。 事情是這樣的:

private Activity CurrentActivity = null;  
public int onStartCommand(Intent intent, int flags, int startId) 
    { 
     CurrentActivity = (CurrentActivity) intent.getClass(); 
     return super.onStartCommand(intent, flags, startId); 
    } 

這並不工作,但我也不知道是什麼呢。 我也找不到將活動作爲參數的putExtra。 那麼我該如何做到這一點?

+0

你不想在'Intent'中發送'Activity'引用。請解釋您爲什麼想要這樣做,我們可以提出其他建議。 – 2014-10-30 18:15:46

回答

4

在第一個活動需要一個靜態變量的活動像這樣,

public static Activity activity; 

在OnCreate做到這一點。

activity = this; 

然後在第二個活動做到這一點,

Activity activity = (your activity name).activity; 

這是根據我的小知識,最好的解決辦法。只要像這樣傳遞一個代碼/值的變化。

Intent intent = new Intent(); 
intent.putExtra("someValue", "data"); 

而在第二個活動中檢查值,如果該值是您的必需值,則獲取您所需的活動實例。我希望這會解決你的問題,如果會的話,請讓我知道。

+0

對不起,遲到的迴應。我找到了另一種方法來實現我正在做的事情,所以我不需要這樣做。 但是,這似乎工作,只需要添加的是一個具體的活動,當調用一個函數或更改變量的類型轉換,意圖額外我可以檢查使用哪種類型轉換。所以感謝您的幫助! – mstrdenz188 2014-12-01 10:28:01

+0

歡迎親愛的! – 2014-12-01 10:47:38

+4

你不應該在靜態變量中持有對活動的引用。 – armansimonyan13 2017-02-06 15:06:13

3

只是在額外的電流活動將活動名稱這樣

startActivity(new Intent(this, otherActivity.class).putExtra("from" , "previousActivity")); 

,並獲得額外的

string act = getIntent().getStringExtra("from"); 

Class callerClass = Class.forName(caller); 

希望這將解決您的問題。

+1

謝謝!雖然我不知道如何將類對象轉換爲一個Activity對象(不創建新的實例)。 – mstrdenz188 2014-10-30 13:50:18

+0

Activity obj =(Activity)callerClass .newInstance(); – 2014-10-30 16:38:15

+0

如果有幫助,請接受我的回答。 – 2014-10-30 16:38:40