2015-05-31 283 views
2

我的程序由MainActivity和兩個片段活動組成。我需要一個片段從用戶獲取一個字符串值並將其傳遞給第二個片段。Android:getIntent()已棄用

我想圍繞如何做到這一點我的頭。由於我熟悉意圖,我在另一篇文章中發現this answer並決定嘗試一下。一切都很好,直到我到第4步,當我嘗試在我的第二個片段中使用Intent i = getIntent();時,Studio不會讓我使用它並說"getIntent(java.lang.String) is deprecated"

這對我沒有意義,因爲我在其他程序中沒有問題地使用了getIntent(),它讓我在我的MainActivity(第二步從另一篇文章中)中使用它,而不用尖叫我。

我知道這可以在不使用意圖的情況下完成,但是我無法弄清楚並且找不到任何真正徹底的教程來完成。所以我想我的問題是:

  1. 我可以讓意向仍然工作嗎?我該怎麼做才能解決這個棄用問題?
  2. 任何其他的建議,解釋,或「解釋它像我5」教程的鏈接將是非常有益的和歡迎。我已經谷歌和讀了幾個,但我仍然不理解這一點,並越來越沮喪。看起來這應該是一個相對簡單的概念。
+0

爲什麼downvotes?這是一個非常好的問題。 –

+0

謝謝你,維爾納。網上沒有任何關於這種棄用的信息,或者該怎麼辦。作爲新手,我發現這一切都特別令人困惑。 – rnbee

+4

'getIntent(java.lang.String)'似乎不匹配調用代碼'i = getIntent();' - 我在這裏丟失了什麼?我們可以看到相關的代碼片段嗎? – stkent

回答

0

這意味着,此方法在其他版本中不受支持。該方法仍然在API中,用於未指定的時間的向後兼容性。大多數情況下,使用不推薦使用的方法是危險的,或者有更好的方法來實現這一點。 喜歡它描述here

在這種情況下,你應該寧願使用:parseUri(String, int)來實現這一(根據android developer api)。

1

將Object從Activity傳遞給Java Class時遇到同樣的問題。我沒有看到給這個問題一個downVote的理由。下面是我做

該活動將數據發送

Salaray newSalary = new Salary(); 
Intent intent = new Intent(ViewData.this,Data.class); 
intent.putExtra("SalaryObj", newSalary); 


它臨危
這裏我想這個數據(在Data.class),但Android Studio中說getIntent已被棄用
Intent intent = Intent. getIntent() ;

那麼,我可以用什麼來代替getIntent(),因爲我在Internet上找到的所有解決方案都是使用這個問題,使用getIntent()


編輯:
我玩這個四周,發現我試圖接受的Java類(非活動)的數據。但是當我在一個Activity中使用它時,它可以正常工作。但是它讓我想到另一個問題,即如何將數據從Activity發送到Java Class(這不是Activity)。

+0

你不能使用構造函數或通過將值設置爲該類的靜態變量 –

3

答案爲時已晚,但我仍然在爲其他人提供答案。這是因爲Intent基本上是與一項活動一起工作的。片段不是活動,而是活動。所以你只需要這樣做:

Intent intent=getActivity().getIntent();