我想将数据从一个标签发送到另一个标签。接收数据的那个包含一个微调器。传递该数据时,我希望微调器将其选择更改为数据中给定的选择(它将与其中一个微调器项目相同)。
我有什么想法可以使用Bundle来做到这一点吗?
答案 0 :(得分:0)
是同一活动还是新活动?
同样的活动:
创建一个onClickListener并更改微调器中的项目。
新活动:
使用
Inten intent = new Intent(yourclassname.this, targetClassname.class);
intent.putExtra("ID",DATA);
this.startActivity(intent);
如果您提供一些代码会有所帮助,但是现在我希望这有帮助
答案 1 :(得分:0)
作为选项使数组保持旋转器的数据静态,然后在目标活动中创建一个静态方法,如下所示:
public static void setSpinnerData (String[] data) {
spinnerData = data;
}
然后调用类似这样的东西YourActivity.setSpinnerData(myArray);
或者,您可以考虑将数据保存到应用程序对象,这对所有活动都是相同的。
答案 2 :(得分: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()中取消注册。
另一种选择是使用处理程序并将消息发送给处理程序。但是,您需要在发送方中可以访问位于接收方中的处理程序。通过这种方式,您的片段或活动(标签)将更强大地耦合。