将数据从一个选项卡发送到另一个包含微调器的选项卡

时间:2012-01-08 16:45:09

标签: android android-intent android-spinner

我想将数据从一个标签发送到另一个标签。接收数据的那个包含一个微调器。传递该数据时,我希望微调器将其选择更改为数据中给定的选择(它将与其中一个微调器项目相同)。

我有什么想法可以使用Bundle来做到这一点吗?

3 个答案:

答案 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()中取消注册。

另一种选择是使用处理程序并将消息发送给处理程序。但是,您需要在发送方中可以访问位于接收方中的处理程序。通过这种方式,您的片段或活动(标签)将更强大地耦合。