0

スワイプ可能な空のビューを 3 つ取得しました。3 番目のビューは「ViewAll」です。最初のビューは正常に動作しますが、2 番目のビューにスワイプすると、このエラーが表示されます。

JSONで読み込んだデータをAsyncTaskで表示しようとしたのですが、こちらのNullPointerExceptionエラーが出てしまい対処法がわかりません...

11-12 10:00:23.046: E/InputEventReceiver(12007): Exception dispatching input event.
11-12 10:00:23.046: E/MessageQueue-JNI(12007): Exception in MessageQueue callback: handleReceiveCallback
11-12 10:00:23.056: E/MessageQueue-JNI(12007): java.lang.NullPointerException
11-12 10:00:23.056: E/MessageQueue-JNI(12007):  at com.example.rumorz.ViewAll$PostTask.onPreExecute(ViewAll.java:52)
11-12 10:00:23.056: E/MessageQueue-JNI(12007):  at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:586)

これが私のコードです:

public class ViewAll extends Fragment {

    //URL to get JSON Array
    private static String url = ""; //URL to my site with JSON-code

    //JSON Node Names 
    private static final String TAG_USER = "user";
    private static final String TAG_message= "message";

    TextView tvuser ;
    TextView tvmessage ;

    JSONArray user = null;


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

    new PostTask().execute();
    View rootView = inflater.inflate(R.layout.viewall, container, false);

    return rootView; 
}


private class PostTask extends AsyncTask<String, String, JSONObject> {
       @Override
       protected void onPreExecute() {
          super.onPreExecute();

             tvuser = (TextView)getView().findViewById(R.id.tvUser);
         tvmessage = (TextView)getView().findViewById(R.id.tvmessage);
       }

       @Override
       protected JSONObject doInBackground(String... args) {
           JSONParser jParser = new JSONParser();

           // Getting JSON from URL
           JSONObject json = jParser.getJSONFromUrl(url);
           return json;
       }




       @Override
       protected void onPostExecute(JSONObject json) {
        try {
               user = json.getJSONArray(TAG_USER);
                JSONObject c = user.getJSONObject(0);

                // Storing  JSON item in a Variable
                 String users = c.getString(TAG_USER);
                 String message = c.getString(TAG_message);


                tvuser.setText(users);
                tvmessage.setText(message);

        } catch (JSONException e) {
                e.printStackTrace();
            }
       }

}

4

2 に答える 2

2

タスクが実行された直後に UI スレッドで呼び出される onPreExecute()。初期化する

tvuser = (TextView)rootView.findViewById(R.id.tvUser);
    tvmessage = (TextView)rootview.findViewById(R.id.tvmessage);

onCreateViewで

于 2013-11-12T09:26:11.647 に答える
0

で初期化しonCreateViewます。膨張したビュー オブジェクトを使用して、テキストビューを初期化します。またはテキストビューの初期化に使用getViewします。onActivityCreated

onPostEecutetextview はクラスメンバーとして宣言されているため、テキストを同じに設定するために使用できます。

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.viewall, container, false);
    tvuser = (TextView)rootView.findViewById(R.id.tvUser);
    tvmessage = (TextView)rootview.findViewById(R.id.tvmessage);

    new PostTask().execute();
    return rootView; 
}
于 2013-11-12T09:20:28.140 に答える