2011-10-27 53 views
1

如何獲得該活動從EditText上(editProtein)這樣如何從EditText獲取活動中的值以便在其他活動上使用它?

protected void protein() { 
    EditText editCalorie = (EditText)findViewById(R.id.editCalorie); 
    double pro = Double.parseDouble(editCalorie.getText().toString()); 
    EditText editProtein = (EditText)findViewById(R.id.editProtein); 
    editProtein.setText(Double.toString(pro * 0.25 * 4)); 
} 

值上使用它的另一項活動? 我應該在活動和其他活動上使用哪些代碼,謝謝

+0

你問這個問題之前,你甚至做過任何研究嗎? – njzk2

回答

4

有不少,你可以分享不同Activity類之間數據的幾種不同的方式。你如何做到這一點取決於你的具體應用程序和數據應該具有的生命週期。

第一種方式是由putExtras()方法來將它傳遞給你的第一Activity推出新Activity任意信息發送到其他活動。要啓動第二個Activity,請使用Intent;你正在做的是包裝一些額外的任意數據(在這種情況下,也許你的蛋白質的東西):

Bundle bundle = this.getIntent().getExtras(); 
String param1 = bundle.getString(「some_protein_stuff″); 

然而,正如:

Bundle bundle = new Bundle(); 
bundle.putString(「some_protein_stuff″, textStringFromYourEditText); 

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

在ActivityClass2,我們可以使用語法閱讀此參數一個替代方案,而不是在調用它時將數據傳遞到新的Activity,您可能還需要考慮使用共享首選項。這是一種機制,通過這種機制,您可以通過鍵值對在應用程序中非常輕鬆地存儲數據。如果您可能希望使用用戶通過EditText在各個其他Activity類中輸入的值,並且希望在應用程序關閉並在稍後再次打開時使用相同的值,那麼它仍然可用只需將其從共享首選項中拉出即可。首選項非常易於使用,並且在SO或其他地方有各種教程。

作爲另一種選擇,您可以考慮通過創建一個擴展android.app.Application的類來共享類似於「全局」的數據,或者創建一個Singleton類,從而獲得與此類似的結果。

開始新Activity當與Intent捆綁數據的第一個最明顯的解決方案是可能你以後,但後者的兩個建議也可能是利益取決於應用程序如何工作以及如何你想要保持這些數據。

+0

我是Android編程的新手,我得到這一行的錯誤 Bundle bundle = this.getIntent()。getExtras(); 方法getIntent()未定義...否則,getIntent()不是一種方法嗎?如果我錯了,請糾正我,Thx Trevor – Michelle

1

您可以將值傳遞給其他活動。喜歡的東西:

intent.putExtra("CALORIE", calorie); 
intent.putExtra("PROTEIN", protein); 

與此相應,在要使用這些值,使用類似的活動:

Bundle extras = getIntent().getExtras(); 
if(extras !=null) { 
    double calorie = extras.getDouble("CALORIE"); 
    double protein= extras.getDouble("PROTEIN"); 
} 
+0

我是Android編程的新手,我得到這一行的錯誤Bundle extras = getIntent()。getExtras();方法getIntent()是未定義的...否則,getIntent()不是一種正確的方法嗎?糾正我,如果我錯了,Thx Hermant – Michelle

相關問題