2012-01-08 26 views
-2

我想將數據從一個標籤發送到另一個標籤。將接收數據的那個包含一個微調器。當數據傳遞時,我希望微調器將其選擇更改爲數據中給出的選擇(它將與其中一個微調項目相同)。將數據從一個標籤發送到另一個標籤,其中包含微調框

任何想法如何使用Bundle來做到這一點?

+0

請發佈一些關於你正在嘗試做什麼的代碼。 – kosa 2012-01-08 16:47:31

回答

0

這是在同一個活動還是在一個新的活動?

相同的活動:

做出onClickListener並更改微調的項目。

新活動:

使用

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

它會幫助,如果你提供一些代碼,但現在我希望這有助於

0

爲選項使列保持數據的微調靜然後在目標活動中創建一個靜態方法,如下所示:

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

然後調用像這樣的YourActivity.setSpinnerData(myArray);

Alternativerly你可以考慮將數據保存到應用程序對象,這對所有活動都是一樣的。

+0

要更新微調控制器,需要使用靜態方法無法訪問的活動實例。 – Stefan 2012-01-08 17:40:51

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()中取消註冊。

另一種選擇是使用處理程序並將消息發送到處理程序。但是,您需要發件人可以訪問位於接收者中的處理程序。這樣你的片段或活動(標籤)會更加耦合。

相關問題