2

メソッドに多くのコードが含まれているフラグメントがあるonCreateViewため、このコードを外部スレッドに配置することをお勧めします。問題は、このスレッドでレイアウトをロードする必要があることですがonStart、Activity のメソッドでこの Fragment の新しいオブジェクトを作成すると、次の行で NullPointerException になります。

LayoutInflater inflater = getActivity().getLayoutInflater();

getActivity が返されると思いますがnull、なぜですか? メソッドでオブジェクトを作成しますonStart。アクティビティが返されないはずnullですか、それとも私の思索の何が問題なのですか? 私のコード:

MyFragment f;

public class Tablet extends FragmentActivity
{
    // onCreate(), Variables and so on...

    @Override
    protected void onStart() 
    {
        super.onStart();
        f = new MyFragment();
    }
}

public class StundenAnsicht extends Fragment implements Runnable
{
    public MyFragment()
    {
        Thread t = new Thread(this);
        t.start();
    }

    @Override
    public void run() 
    {
        LayoutInflater inflater = getActivity().getLayoutInflater();
        //...
    }
}
4

3 に答える 3

0

UI スレッドの外部から Android UI ツールキットにアクセスしないでください。

onCreateView に他のコードがある場合は、UI スレッドで実行される結果ハンドラー onPostExecute で AsyncTask を使用できます。onCreateView のコードのほとんどが UI 関連である場合は、そのままにしておいてください。

于 2013-05-20T21:14:44.790 に答える