0

私は AsyncTask を初めて使用するので、いくつかのエラーに遭遇しました。私は、何が間違っていて、それを修正するために何をする必要があるかを教えてくれる人です。このコードを試すたびに FATAL EXCEPTION: AsyncTask #1 が表示されるので、誰か助けてください。

 07-25 03:47:57.526: W/dalvikvm(799): threadid=11: thread exiting with uncaught exception (group=0x40a71930)
    07-25 03:47:57.666: E/AndroidRuntime(799): FATAL EXCEPTION: AsyncTask #1
    07-25 03:47:57.666: E/AndroidRuntime(799): java.lang.RuntimeException: An error occured while executing doInBackground()
    07-25 03:47:57.666: E/AndroidRuntime(799):  at android.os.AsyncTask$3.done(AsyncTask.java:299)
    07-25 03:47:57.666: E/AndroidRuntime(799):  at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
    07-25 03:47:57.666: E/AndroidRuntime(799):  at java.util.concurrent.FutureTask.setException(FutureTask.java:219)
    07-25 03:47:57.666: E/AndroidRuntime(799):  at java.util.concurrent.FutureTask.run(FutureTask.java:239)
    07-25 03:47:57.666: E/AndroidRuntime(799):  at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
    07-25 03:47:57.666: E/AndroidRuntime(799):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
    07-25 03:47:57.666: E/AndroidRuntime(799):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
    07-25 03:47:57.666: E/AndroidRuntime(799):  at java.lang.Thread.run(Thread.java:856)
    07-25 03:47:57.666: E/AndroidRuntime(799): Caused by: java.lang.NullPointerException
    07-25 03:47:57.666: E/AndroidRuntime(799):  at com.theproblemsolver.JSONParsser.getJSONFromURI(JSONParsser.java:35)
    07-25 03:47:57.666: E/AndroidRuntime(799):  at com.theproblemsolver.asynctask.doInBackground(MainActivity.java:60)
    07-25 03:47:57.666: E/AndroidRuntime(799):  at com.theproblemsolver.asynctask.doInBackground(MainActivity.java:1)
    07-25 03:47:57.666: E/AndroidRuntime(799):  at android.os.AsyncTask$2.call(AsyncTask.java:287)
    07-25 03:47:57.666: E/AndroidRuntime(799):  at java.util.concurrent.FutureTask.run(FutureTask.java:234)

主な活動

public class MainActivity extends Activity {

    EditText et;
    Button getanswer;

    JSONArray ResultsSet = null; {}

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        Button getanswer = (Button) findViewById(R.id.button1);
        getanswer.setOnClickListener(new OnClickListener() {


        @Override
        public void onClick(View v) {
            new asynctask().execute();

        }

        });
    } 
}

      class asynctask extends AsyncTask<String, Void, JSONObject> {

             private static final String TAG_RESULTS = "ResultsSet";
             private static final String TAG_SUBJECT = "Subject";
             private static final String TAG_NUMANSWERS = "NumAnswers";
             private static final String TAG_QUESTION = "Question";
             private static final String TAG_QUESTION_CONTENT = "Content";
             private static final String TAG_QUESTION_CHOSENANSWER = "ChosenAnswer";
             private static final String TAG_QUESTION_ANSWERS = "Answers";
            public JSONArray json;

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

             JSONParsser jParser = new JSONParsser();

             String uRI = null;

             JSONObject json = jParser.getJSONFromURI(uRI);

             return json ;

         }{ }
             @Override
             protected void onPostExecute(JSONObject json) {

                 JSONArray ResultsSet = null; {
                 try {
                     ResultsSet = json.getJSONArray(TAG_RESULTS);
                } catch (JSONException e) {
                   e.printStackTrace();
             }

            return;

        }}}

JSONParser クラス

public class JSONParsser {

    static InputStream is = null;
    static JSONObject jObj = null;
    static String json = "";
    EditText et;

    public JSONParsser () {
    }

    public JSONObject getJSONFromURI(String uRI) {

        try{
        HttpClient client = new DefaultHttpClient();
        try {
            URI website = new URI("http://answers.yahooapis.com/AnswerService/V1/questionSearch?appid=vcE15nV34EYK7oAge17Ws6nF3DOzc5ccb4PsWtQjW2YTG3gjKbz8exOHYQr6Psizg&query=" + et.getText() + "sort&type=resolved&results&output=json");
            HttpGet request = new HttpGet();
            request.setURI(website);
            try {
                HttpResponse response = client.execute(request);
            HttpEntity httpEntity = response.getEntity();
            is = httpEntity.getContent();

            } catch (ClientProtocolException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        } catch (URISyntaxException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        return jObj;

        }finally{}

    }{

    }}

InstanceofJSONParser クラス

public class JSONParserInstance {

    JSONParsser jParser = new JSONParsser();

    public String uRI;

    JSONObject json = jParser.getJSONFromURI(uRI);


     private static final String TAG_RESULTS = "ResultsSet";
     private static final String TAG_SUBJECT = "Subject";
     private static final String TAG_NUMANSWERS = "NumAnswers";
     private static final String TAG_QUESTION = "Question";
     private static final String TAG_QUESTION_CONTENT = "Content";
     private static final String TAG_QUESTION_CHOSENANSWER = "ChosenAnswer";
     private static final String TAG_QUESTION_ANSWERS = "Answers";

            JSONArray ResultsSet = null; {

    try {
       ResultsSet = json.getJSONArray(TAG_RESULTS);

       for(int i = 0; i < ResultsSet.length(); i++){
           JSONObject r = ResultsSet.getJSONObject(i);

           String Subject = r.getString(TAG_SUBJECT);
           String NmAnswers = r.getString(TAG_NUMANSWERS);

           JSONObject Question = r.getJSONObject(TAG_QUESTION);
           String Content = Question.getString(TAG_QUESTION_CONTENT);
           String ChosenAnswer = Question.getString(TAG_QUESTION_CHOSENANSWER);
           String Answers = Question.getString(TAG_QUESTION_ANSWERS);

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

}}}
4

3 に答える 3

2
String uRI = null;

JSONObject json = jParser.getJSONFromURI(uRI);

null-String を解析しようとしていて、java.lang.NullPointerException を取得しています

new asynctask().execute(someUrl);代わりに試して、doInBackground メソッドにnew asynctask().execute();変更String uRI = null;してください。String uRI = params[0]

于 2013-07-25T04:55:08.120 に答える
0

あなたのコードでは、null Pointer Exception を引き起こしている にnull値を渡していますgetJSONFromURI()

String uRI = null;

JSONObject json = jParser.getJSONFromURI(uRI);  // Passing null 
于 2013-07-25T04:54:12.470 に答える
0

変化する

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

         JSONParsser jParser = new JSONParsser();

         String uRI = null;

         JSONObject json = jParser.getJSONFromURI(uRI);

         return json ;

     }{ }

 String uRI = null;//don't make it null
@Override
         protected JSONObject doInBackground(String... params) {

             JSONParsser jParser = new JSONParsser();



             JSONObject json = jParser.getJSONFromURI(uRI);

             return json ;

        }
于 2013-07-25T05:00:51.430 に答える