0

Asynctask クラスからタブへのインテントを作成したいと考えています。次のコードを使用すると、同じタブにデータを表示する代わりに、新しいアクティビティが作成され、そのアクティビティにデータが表示されます。

@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 つのタブが含まれています。

Details.class のタブである profile.class にデータを送信するにはどうすればよいですか

4

2 に答える 2

0

クラスが他のパラメータを処理するのと同じ方法Detailsで、バンドルの追加で追加のデータを処理する必要があります。

クラスでこれらのパラメーターを処理するには、onCreateまたは(より良い)のいずれかを使用すると思います。そこから、静的ファクトリメソッドを使用してタブフラグメントを作成し(メソッドについてはこちらを参照)、タブマネージャーを使用してフラグメントを表示します。onNewIntentDetailsnewFragment

ところで、Details名前は貧弱ですが、DetailActivityより良いでしょう。

于 2012-08-18T05:50:24.423 に答える
0

これを行うためのより適切な方法は、ハンドラーとメッセージによるものです。

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 に答える