1

このフラグメントをバックグラウンド スレッドとして実行したかったので、実行された処理はメイン UI スレッドに影響しませんでしたが、行でヌル ポインター例外が発生しました。

 handler.post(new Runnable() {

道に迷ったのですが、どうすれば直せますか? ここにスタックトレースがあります

07-15 09:34:36.534: E/AndroidRuntime(6905): 致命的な例外: スレッド-5235 07-15 09:34:36.534: E/AndroidRuntime(6905): java.lang.NullPointerException 07-15 09:34: 36.534: E/AndroidRuntime(6905): com.example.asynctaskprogressbarexample.FragmentHeadlessFragment$1.run(FragmentHeadlessFragment.java:37) で

残りのコード

 public class FragmentHeadlessFragment extends Fragment {

private OnTimeRequestedListener listener;
Activity activity;
Handler handler;

@Override
public void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);

    new Thread(){

        public void run() {

        SystemClock.sleep(3000);

        handler.post(new Runnable() {  // <-- NULL POINTER EXCEPTION THIS LINE
            @Override
            public void run() {

                passData("test string from fragment with 3 second delay");
            }
         });


         } // end run

  }.start(); 


} // end onCreate

 @Override
  public void onAttach(Activity activity) {
    super.onAttach(activity);

    if (activity instanceof OnTimeRequestedListener) {
      listener = (OnTimeRequestedListener) activity;
    } else {
      throw new ClassCastException(activity.toString()
          + " must implement OnTimeRequestedListener");
    }
  }

@Override
 public void onActivityCreated(Bundle savedInstanceState) {
  super.onActivityCreated(savedInstanceState);
  activity = getActivity();
  setRetainInstance(true);


 }

 public interface OnTimeRequestedListener {
        public void passSystemTime(String timeNumberString);

  }

 public void passData(String data) {
        listener.passSystemTime(data);
    }


}
4

2 に答える 2

1

onCreate() でハンドラを初期化していないようです。

于 2013-07-15T00:47:12.783 に答える
0

Handler handler =getWindow().getDecorView().getHandler(); を呼び出すことができるハンドラを初期化したことがありません。

于 2013-07-15T00:51:57.473 に答える