2012-01-08 8 views
-2

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

これを行うにはどのようにバンドルを使用できますか?

+0

あなたがしようとしていることについていくつかのコードを投稿してください。 – kosa

答えて

0

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

同じアクティビティ:

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

新しいアクティビティ:静的スピナーのための配列データ保持をするあなたには、いくつかのコードを提供する場合、それが役立つだろうが、今のところ、私はこれはオプションとして

0

を役に立てば幸い

使用

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)のようなものを呼び出します。

これ以外の方法で、すべてのアクティビティで同じアプリケーションオブジェクトにデータを保存することもできます。

+0

スピナーを更新するには、静的メソッドからアクセスできないアクティビティー・インスタンスが必要です。 – Stefan

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つのオプションは、ハンドラを使用してハンドラにメッセージを送信することです。しかし、受信側にあるハンドラが送信側でアクセス可能である必要があります。このようにして、あなたの断片や活動(タブ)は強く結合されます。

関連する問題