0

2 つのタブを持つ FragmentTabHost があります。各フラグメント (タブ) は、インターネットからデータを読み込んで表示する必要があります。

データを onCreate にロードしてデータを入力している場合、別のタブに切り替えて戻ると、空のビューが表示されます。

TextView emailView;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    View convertView = inflater.inflate(R.layout.contactdetails_pro, container, false);

    emailView = (TextView) convertView.findViewById(R.id.contactdetails_info_email);

    return convertView;
}


@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    String id = getArguments().getString("id");

    MyTask pdthread = new MyTask(this.getActivity(), id, new AsyncTaskCompleteListener() {
        @Override
        public void onComplete(Detail detail) {
            emailView.setText(detail.getEmail());
        }
    });
    pdthread.execute();
}
4

1 に答える 1

0

私はよく知りませんFragmentTabHostが、これを試すことができます(注:Detailクラスを実装する必要がある場合がありますSerializable):

Detail mDetail = null;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    String id = getArguments().getString("id");

    if (savedInstanceState == null) {
        MyTask pdthread = new MyTask(this.getActivity(), id, new AsyncTaskCompleteListener() {
            @Override
            public void onComplete(Detail detail) {
                mDetail = detail;
                emailView.setText(mDetail.getEmail());
            }
        });
        pdthread.execute();
    } else {
        mDetail = (Detail)savedInstanceState.getSerializable("detail");
        if (mDetail ! = null) {
            emailView.setText(detail.getEmail());
        }
    }
}

@Override
public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.putSerializable("detail", mDetail);
}
于 2013-06-16T00:22:57.340 に答える