-2

あるタブから別のタブにデータを送信したい。データを受け取るものにはスピナーが含まれています。そのデータが渡されたら、スピナーの選択をデータ内で指定されたものに変更します (スピナー項目の 1 つと同じになります)。

Bundle を使用してこれを行う方法はありますか?

4

3 に答える 3

0

これは同じアクティビティですか、それとも新しいアクティビティですか?

同じアクティビティ:

onClickListener を作成し、スピナーの項目を変更します。

新しいアクティビティ:

使用する

Inten intent = new Intent(yourclassname.this, targetClassname.class);
intent.putExtra("ID",DATA);
this.startActivity(intent);

コードを提供していただけると助かりますが、今のところ、これが役立つことを願っています

于 2012-01-08T17:31:22.427 に答える
0

オプションとして、スピナーのデータを保持する配列を静的にし、次のような宛先アクティビティで静的メソッドを作成します。

   public static void setSpinnerData (String[] data) {
     spinnerData = data; 
   }

次に、この YourActivity.setSpinnerData (myArray); のようなものを呼び出します。

または、すべてのアクティビティで同じアプリケーション オブジェクトにデータを保存することを検討できます。

于 2012-01-08T17:37:32.200 に答える
0

ブロードキャストを使用してデータ (文字列や 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 つのオプションは、ハンドラーを使用してメッセージをハンドラーに送信することです。ただし、受信側にあるハンドラーに送信側でアクセスできるようにする必要があります。このようにして、フラグメントまたはアクティビティ (タブ) がより強く結合されます。

于 2012-01-08T17:37:40.080 に答える