あるタブから別のタブにデータを送信したい。データを受け取るものにはスピナーが含まれています。そのデータが渡されたら、スピナーの選択をデータ内で指定されたものに変更します (スピナー項目の 1 つと同じになります)。
Bundle を使用してこれを行う方法はありますか?
あるタブから別のタブにデータを送信したい。データを受け取るものにはスピナーが含まれています。そのデータが渡されたら、スピナーの選択をデータ内で指定されたものに変更します (スピナー項目の 1 つと同じになります)。
Bundle を使用してこれを行う方法はありますか?
これは同じアクティビティですか、それとも新しいアクティビティですか?
同じアクティビティ:
onClickListener を作成し、スピナーの項目を変更します。
新しいアクティビティ:
使用する
Inten intent = new Intent(yourclassname.this, targetClassname.class);
intent.putExtra("ID",DATA);
this.startActivity(intent);
コードを提供していただけると助かりますが、今のところ、これが役立つことを願っています
オプションとして、スピナーのデータを保持する配列を静的にし、次のような宛先アクティビティで静的メソッドを作成します。
public static void setSpinnerData (String[] data) {
spinnerData = data;
}
次に、この YourActivity.setSpinnerData (myArray); のようなものを呼び出します。
または、すべてのアクティビティで同じアプリケーション オブジェクトにデータを保存することを検討できます。
ブロードキャストを使用してデータ (文字列や ID などの小さなもの) を送信できます。データが生成されるタブで
final Intent i = new Intent(IConstants.UPDATE_SPINNER);
i.putExtra(IConstants.DATA_UPDATE, data);
this.sendBroadcast(i)
IConstants.UPDATE_SPINNER と DATA_UPDATE は、受信者がメッセージを識別するために使用する単なる文字列です。私が使用したインターフェイスの代わりに、メインのアクティビティにそれらを配置することもできます。
スピナーのあるタブで、ブロードキャスト レシーバーの内部クラスを宣言します。外部クラスのスピナーにアクセスできます。
private final class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(final Context context, final Intent intent) {
if( IConstants.UPDATE_SPINNER.equals(intent.getAction()) ) {
final String data = intent.getIntExtra(IConstants.DATA_UPDATE, "");
// update your spinner
return;
}
// process other messages ...
}
}
onCreate() または onResume() などで、このようにブロードキャスト レシーバーを登録します。
this.broadcastReceiver = new MyBroadcastReceiver();
final IntentFilter f = new IntentFilter(IConstants.UPDATE_SPINNER);
// for more actions you can add them like this:
// f.addAction(IConstants.UPDATE_ONOTHER_WIDGET);
this.registerReceiver(this.broadcastReceiver, f);
onDestroy() または onPause() で忘れずに登録解除してください。
もう 1 つのオプションは、ハンドラーを使用してメッセージをハンドラーに送信することです。ただし、受信側にあるハンドラーに送信側でアクセスできるようにする必要があります。このようにして、フラグメントまたはアクティビティ (タブ) がより強く結合されます。