(Ganesh の回答のように) 変数を使用public static
するとうまくいきますが、一般的に、それは私がお勧めするオブジェクト指向のパターンではありません。
幸いなことに、これはAndroid よりも BlackBerry の方が簡単です。Android のIntent
メカニズムは、実際には多くの Java 開発者にとってやや不自然です。を介して別のインスタンスをActivity
起動すると、実際には 2 番目のインスタンスが作成 (作成)されず、そのオブジェクトへの通常の Java 参照も保持されません。もしそうなら、この問題ははるかに簡単になります。Android の実装では、インテント エクストラメカニズムを使用する必要があります。Activity
Intent
new
Activity
古いActivityOne
クラスがScreenOne
BlackBerry 用にActivityTwo
なりScreenTwo
、 になった場合は、次のようなことができます。
public class ScreenTwo extends Screen {
private String _value1; // this doesn't have to be a String ... it's whatever you want
private String _value2;
public void setValue1(String value) {
_value1 = value;
}
public void setValue2(String value) {
_value2 = value;
}
}
次に、 では、この方法でScreenOne
開始できますScreenTwo
ScreenTwo nextScreen = new ScreenTwo();
nextScreen.setValue1("This value one for ActivityTwo");
nextScreen.setValue2("This value two ActivityTwo");
UiApplication.getUiApplication().pushScreen(nextScreen);
これは実際には、Java オブジェクトが通常使用され、相互に対話する方法とより一致しています。
Android が作られた理由Intents
と追加機能には十分な理由がありますが、BlackBerry ではそれについて心配する必要はありません。
編集:以下のスミス氏のコメントの背後にある動機は何かを考えようとしています. Intent
複数のデータ型をキーと値のペアとして渡すことができるという意味でAndroid のエクストラ メカニズムが実際に気に入っている場合はActivity
、BlackBerry でも同様のことを確実に実現できます。上記のコードの代わりに、ScreenTwo
これを使用できます。
public class ScreenTwo extends Screen {
private Hashtable _extras;
public void putExtras(Hashtable extras) {
_extras = extras;
}
}
put(Object, Object)
キーと値のペアのデータをHashtable
呼び出された画面に渡して、必要なときに読み取る場所。あるいは:
public class ScreenTwo extends Screen {
private Hashtable _extras;
public void putExtra(String name, Object value) {
_extras.put(name, value);
}
}