-2

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

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

4

3 回答 3

0

这是在同一活动中还是在新活动中?

相同的活动:

制作一个 onClickListener 并更改微调器中的项目。

新活动:

利用

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

如果您提供一些代码会有所帮助,但现在我希望这会有所帮助

于 2012-01-08T17:31:22.427 回答
0

作为选项,使数组保存微调器的静态数据,然后在您的目标活动中创建一个静态方法,如下所示:

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

然后调用类似 YourActivity.setSpinnerData (myArray);

或者,您可以考虑将数据保存到所有活动都相同的应用程序对象。

于 2012-01-08T17:37:32.200 回答
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() 中取消注册。

另一种选择是使用处理程序并将消息发送到处理程序。但是,您需要位于接收器中的处理程序才能在发送器中访问。这样,您的片段或活动(选项卡)的耦合会更强。

于 2012-01-08T17:37:40.080 回答