我想將數據從一個標籤發送到另一個標籤。將接收數據的那個包含一個微調器。當數據傳遞時,我希望微調器將其選擇更改爲數據中給出的選擇(它將與其中一個微調項目相同)。將數據從一個標籤發送到另一個標籤,其中包含微調框
任何想法如何使用Bundle來做到這一點?
我想將數據從一個標籤發送到另一個標籤。將接收數據的那個包含一個微調器。當數據傳遞時,我希望微調器將其選擇更改爲數據中給出的選擇(它將與其中一個微調項目相同)。將數據從一個標籤發送到另一個標籤,其中包含微調框
任何想法如何使用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);
Alternativerly你可以考慮將數據保存到應用程序對象,這對所有活動都是一樣的。
要更新微調控制器,需要使用靜態方法無法訪問的活動實例。 – Stefan 2012-01-08 17:40:51
您可以使用廣播發送數據(比如字符串或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()中取消註冊。
另一種選擇是使用處理程序並將消息發送到處理程序。但是,您需要發件人可以訪問位於接收者中的處理程序。這樣你的片段或活動(標籤)會更加耦合。
請發佈一些關於你正在嘗試做什麼的代碼。 – kosa 2012-01-08 16:47:31