アクティビティBのテキストビューから文字列値を取得するには、アクティビティAが必要です。キャッチは、アクティビティBにデータを送信させたくないということです。アクティビティAに連絡して、Bからデータを取得してもらいたいだけです。バンドルについて理解しています。とインテントですが、私が抱えている問題は、アクティビティBにアクセスするたびに、バンドルされたインテントがAに送信されることです。これは発生したくないので、アクティビティAがアクティビティBのテキストビューから文字列を取得するようにします。アクティビティAにアクセスします。Android2.2とSDK8を使用しています。
4 に答える
私が正しく理解していれば、あなたの問題は、アクティビティAとアクティビティBが話し合っていないため、Bを関与させずにAから特定のデータにアクセスする必要があるということです。
両方のアクティビティで共有されるデータをどこかに保存することで、この問題を解決できます。ここでデータストレージの章にリストされているオプションの1つを使用できます。
http://developer.android.com/guide/topics/data/data-storage.html
単純な文字列であれば、共有設定を使用します。
とはいえ、あなたが何を望んでいるのかははっきりしていません。
public class A extends Activity {
public static TextView textView = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
textView=(TextView)findViewById(R.id.textView);
}
}
パブリッククラスBはActivity{を拡張します
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//Thats how you can get the data from Activity A UI Control
//A.textView.getText().toString()
Log.i("Activity A TextView Data" , A.textView.getText().toString());
}
}
アクティビティBのテキストビュー文字列を永続ストレージとして保存します。
http://developer.android.com/guide/topics/data/data-storage.html
問題は、アクティビティAがアクティブなときに、アクティビティBのビューが使用可能であると想定できないことです。実際、Androidは、アクティビティBがバックグラウンドにあるときにガベージコレクションを行う可能性があります。アクティビティは「ウィンドウ」のようなものではありません。彼らははるかに独立しています。
ただし、2つのフラグメントを実装することでこれを実行できると確信しています。