2011-10-27 18 views
1

はどのように別のアクティビティにそれを使用する活動に、この他のアクティビティで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)); 
} 

のようなのEditText(editProtein)から値を取得しますか? アクティビティと他のアクティビティにどのようなコードを使用する必要がありますか?

+0

質問をする前にリサーチを行ったことがありますか? – njzk2

答えて

4

あなたが異なるActivityクラス間でデータを共有することができ、かなりの数の異なる方法があります。どのようにあなたがそれを行うかは、あなたの特定のアプリケーションと、データが持つべきどのような寿命に依存します。

最初の方法は、新しいActivityに最初のActivityから起動し、putExtras()メソッドを使用して、任意の情報を他のアクティビティに送信することです。 2番目のActivityを起動するには、Intentを使用します。 ActivityClass2で

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

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

、我々は構文を使用して、このパラメータを読むことができます::何をやっていることは、いくつかの追加の任意のデータを(この場合は、おそらくあなたの蛋白質のもの)梱包です

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

しかし、として別の方法として、呼び出すときに新しいActivityにデータを渡すのではなく、共有優先度を使用することを検討することもできます。これは、キーと値のペアを使用してアプリケーションに非常に簡単にデータを格納できるメカニズムです。ユーザーがEditTextのさまざまなクラスに入力した値を他のさまざまなクラスに使用する可能性があり、アプリケーションを終了して後で再度開くときにも同じ値を使用する可能性がある場合は、引き続き使用可能になります共有環境設定から簡単に取り戻すことで、あなたに伝えます。プリファレンスは非常に使いやすく、SOなどのさまざまなチュートリアルがあります。

また、android.app.Applicationに拡張されたクラスを作成することで、このようなデータを「グローバルに」共有することや、シングルトンクラスを作成して同様の結果を得ることができます。

新しいActivityを開始するときIntentでデータを束ねるの最初の最も明白な解決策は、あなたが後にしているものをおそらくですが、後者の二つの提案もどのようにあなたのアプリケーションの動作や方法に応じて対象となり得ますそのデータを永続化したいとします。

+0

私はAndroidプログラミングの初心者です。私はこの行に誤りがあります。 バンドルバンドル= this.getIntent()。getExtras(); メソッドgetIntent()は未定義です。そうでなければ、getIntent()はメソッドではありませんか?私が間違っていたら私を訂正する、Thx Trevor – Michelle

1

値を別のアクティビティに渡すことができます。ような何か:GetTextメソッドを持っているのEditTextがのTextViewを拡張

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

私はAndroidプログラミングの初心者です。この行にエラーがあります。バンドルエクストラ= getIntent()。getExtras();メソッドgetIntent()は未定義です...そうでなければ、getIntent()はメソッドではありませんか?私が間違っていた場合、私を修正してください。 – Michelle

関連する問題