2013-02-18 127 views
3

我試圖通過傳遞從一類「玩」的延伸活動的字符串:如何在不擴展Activity的類中使用getIntent()?

Bundle data = new Bundle(); 
Intent i = new Intent(Play.this, Receive.class); 
String category; 

data.putString("key", category); 
i.putExtras(data); 

於是,「接收」類,這是一種非活性類,並不延伸活動將接受字符串從「播放」。

但是,當我嘗試接收使用此代碼數據:

Bundle receive = new Bundle(); 
String passed; 

receive = getIntent().getExtras(); 
passed = receive.getString("key"); 

我得到了字「getIntent()」的錯誤,並建議我創造的方法getIntent()。

這個問題的可能解決方案是什麼? 感謝!

+5

意圖用於活動之間的溝通。沒有辦法通過意向將信息發送給一個簡單的類。您應該使用通信的其他方式將信息發送到一個「非活動」類 – Sprigg 2013-02-18 13:27:48

+0

你可以檢查我的答案貼出如果這是你的唯一案例。 – Prateek 2013-02-18 13:37:09

回答

5

目的不是這裏所必要的。你可以做這樣的事情:

Play.class:

public String getCategory() { 
    return category; 
} 

和Receiver.class:

Play playObject = new Play(); 
passed = playObject.getCategory(); 

或者你也可以使用靜態字段的pKs提及,但它並不總是一個好的模式。

+0

哦,是的。它也可以工作!謝謝! – ejmtv 2013-02-18 15:21:47

0

你不能getIntent();來自不擴展Activity的類。正如斯普里格提到的那樣,你必須在類之間使用其他的通信方式。

1

您應該使用public static variable,並用它來存儲數據,並從其他類獲取數據。

由於意圖不無在Android的擴展Activity類的工作。

就你而言,這將是。

public static category="some category";

要在其他類訪問,

String dataFromActivity=NameOFClassWhereCategoryIsDefined.category;

+0

對不起。我只是新的Android和Java的東西。我正在學習,而我正在做。謝謝,你的建議工作得很好。 – ejmtv 2013-02-18 15:09:42

+0

@ejmtv只有如果有,必須在應用程序共享的小數據的確定方法。 – Prateek 2014-12-17 06:31:13

相關問題