7

javaで静的変数を宣言して新しいアクティビティから呼び出すのではなく、メッセージでインテントを使用する目的は何ですか? 静的変数を好きなもの(つまり、ArrayList、Objectなど)にすることができるため、この方法の方が簡単に思えます。

public class FirstActivity extends Activity {
    public static String name;
... 
    Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
    name = "Robert";
    startActivity(intent);
}

public class SecondActivity extends Activity {
...
    textView.setText(FirstActivity.name);
}
4

3 に答える 3

6

エクストラを startSecondActivityに使用することで、より再利用しやすくなります。ストック アクティビティの多くはこのように機能します。たとえば、カメラ アクティビティを再利用して写真を撮ったり保存したりできます。これは、誰が呼び出しているかを推測しないためです。

あなたの場合、JVMにロードされていることにSecondActivity依存します。FirstActivity私はそれを期待していませんし、アクティビティ間でそのような依存関係を持つことはお勧めできません。これをしないでください。SDK で推奨されているように、エクストラを使用してアクティビティ間で値を渡します。

于 2013-02-13T22:49:17.763 に答える
1

明確にするために、OPの戦略は、自分以外の別のアプリがインテントを処理したい場合には機能しません。このため、これは「ベスト プラクティス」ではありません。

Intent にはおよそ 30 の異なる putExtra バリエーションがあり、それぞれが追加できるさまざまなデータ型を表しています。それらには、Bundle、Parcelable、Serializable などの汎用データ型が含まれます。これらがカバーしていないものは何も考えられません。

Application をオーバーライドすることによって定義された statics や変数、または一部のデータがストレージ内に浮かんでいると想定する他の同様の方法は使用しません。私のアクティビティまたはフラグメントが完全に独立していると仮定する方がはるかに堅牢です。

于 2013-02-14T01:01:12.517 に答える