我想将数据从一个选项卡发送到另一个选项卡。将接收数据的包含一个微调器。传递该数据时,我希望微调器将其选择更改为数据中给定的选择(它将与微调器项目之一相同)。
有什么想法可以使用 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);
或者,您可以考虑将数据保存到所有活动都相同的应用程序对象。
您可以使用广播发送数据(小的字符串或 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() 中取消注册。
另一种选择是使用处理程序并将消息发送到处理程序。但是,您需要位于接收器中的处理程序才能在发送器中访问。这样,您的片段或活动(选项卡)的耦合会更强。