0

我想从我的 Asynctask 类创建一个 Intent 到一个选项卡。如果我使用以下代码,则不是将数据显示到同一个选项卡,而是创建一个新活动并将数据显示在该活动上。

@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
Intent in = new Intent(context, Details.class);
in.putExtra(TAG_FNAME, firstname);
in.putExtra(TAG_LNAME, lastname);
in.putExtra(TAG_GNDR, gender);
in.putExtra(TAG_DOB, date_of_birth);
context.startActivity(in);
}

在上面的代码中,我将数据从我的 Asynctask 类发送到我的 Details.class Detail 类包含 2 个选项卡:home 和 profile

我如何将数据发送到我的 profile.class,这是 Details.class 中的一个选项卡

4

2 回答 2

0

以同样的方式,Details类将处理其他参数,那么您应该在包的额外部分中处理额外的数据。

我猜你使用onCreate或者onNewIntent(更好)来处理Details类中的这些参数。从那里,使用您的静态工厂方法创建您的选项卡片段(在此处查找该newFragment方法),然后使用您的选项卡管理器显示该片段。

顺便说一句,Details名字不好,DetailActivity会更好。

于 2012-08-18T05:50:24.423 回答
0

更合适的方法是通过 Handlers 和 Message:

您应该将 Handler 声明为:

Handler mHandler = new Handler(){

    @Override
    public void handleMessage(Message msg) {
    switch(msg.what){
          case MSG_INTENT:
          // get data from bundle and startActivity() here.;
          Log.d(TAG, "handleMessage() - MSG_00 - msg: "+
                                (String)msg.obj);
          break;
    }
    super.handleMessage(msg);
    }
};

在你的 onPostExecute(): 创建一个Message对象并传递message.what给处理程序。

Message msg = new Message();
Bundle b = new Bundle();
b.putExtra("CallingActivity", "Details.class");
b.putExtra(TAG_FNAME, firstname);
b.putExtra(TAG_LNAME, "Details.class");
b.putExtra(TAG_GNDR, lastname);
b.putExtra(TAG_DOB, date_of_birth);
msg.setData(b);
msg.what = MSG_INTENT;
mHandler.sendMessage(msg);
于 2012-08-18T05:58:35.177 回答