1

私はこれで約1日、頭を壁にぶつけています。誰かが助けてくれることを願っています。

私のプログラムは、いくつかの Json をロードして解析し、非同期タスクのオブジェクトの配列に入れます。この非同期タスクは ListFragment クラスから呼び出され、データは onPostExecute で送り返されます。エラーは発生せず、リストのロード アニメーションは正常に表示されなくなります。しかし、私が何をしても、リストにデータが入力されることはありません。

私は間違いなくデータを返し、正しく解析しています.onPostExecuteで単純な配列とアダプターを使用して、それが私のアダプタークラスではなく、まだ機能しないことを確認しました.

以下のコードを単なる例に簡略化しました。以下のコードは、1 秒間待機してから、ロード アニメーションを削除します。しかし、リストには入力しません。doInBackground メソッドからスリープを削除すると、完全に機能します。

public class MyFragment extends ListFragment {

@Override
public void onActivityCreated(Bundle savedInstanceState) {

    super.onActivityCreated(savedInstanceState);

    AsyncTask<Void, Void, String> task = new AsyncTask<Void,Void,String>()
            {

                @Override
                protected String doInBackground(Void... params) {

                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }

                    return null;

                }

                @Override
                protected void onPostExecute(String result) {               

                    String[] values = new String[] { "Android", "iPhone", "WindowsMobile",
                              "Blackberry", "WebOS", "Ubuntu", "Windows7", "Max OS X",
                              "Linux", "OS/2" };

                    ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(),
                              android.R.layout.simple_list_item_1, android.R.id.text1, values);

                    setListAdapter(adapter);

                }           

     };

     task.execute();

}

}

私が言うように、json の読み込みをシミュレートするために使用している Thread.sleep(1000) を削除すると、正常に動作します。

違いがある場合は、2.3 のフラグメント サポート ライブラリを使用しています。

ありがとうスティーブ

4

1 に答える 1

1

試す

MyFragment.this.setListAdapter(アダプター);

編集:

やあ、

私はあなたのコードを試しましたが、ビューをロードしました

    mLoadedFragment = new MyFragment();
    transaction.replace(R.id.relativeLayout, mLoadedFragment);
    transaction.commit();

問題の唯一の原因は、フラグメントの読み込み中にビューが表示されない、または同様の問題です。

フラグメントをロードする予定のレイアウトを確認することをお勧めします。

于 2013-01-22T12:43:11.353 に答える