-5

アプリケーションで FATAL EXCEPTION: AsyncTask #2 が発生します。誰かが理由を教えてください。また、私が何をする必要があるか教えてください。私は今かなり混乱していて、少し助けが必要です。

07-25 11:18:27.014: E/AndroidRuntime(784): FATAL EXCEPTION: AsyncTask #2
07-25 11:18:27.014: E/AndroidRuntime(784): java.lang.RuntimeException: An error occured while executing doInBackground()
07-25 11:18:27.014: E/AndroidRuntime(784):  at android.os.AsyncTask$3.done(AsyncTask.java:299)
07-25 11:18:27.014: E/AndroidRuntime(784):  at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
07-25 11:18:27.014: E/AndroidRuntime(784):  at java.util.concurrent.FutureTask.setException(FutureTask.java:219)
07-25 11:18:27.014: E/AndroidRuntime(784):  at java.util.concurrent.FutureTask.run(FutureTask.java:239)
07-25 11:18:27.014: E/AndroidRuntime(784):  at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
07-25 11:18:27.014: E/AndroidRuntime(784):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
07-25 11:18:27.014: E/AndroidRuntime(784):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
07-25 11:18:27.014: E/AndroidRuntime(784):  at java.lang.Thread.run(Thread.java:856)
07-25 11:18:27.014: E/AndroidRuntime(784): Caused by: java.lang.NullPointerException
07-25 11:18:27.014: E/AndroidRuntime(784):  at com.theproblemsolver.JSONParsser.getJSONFromURI(JSONParsser.java:35)
07-25 11:18:27.014: E/AndroidRuntime(784):  at com.theproblemsolver.asynctask.doInBackground(MainActivity.java:64)
07-25 11:18:27.014: E/AndroidRuntime(784):  at com.theproblemsolver.asynctask.doInBackground(MainActivity.java:1)
07-25 11:18:27.014: E/AndroidRuntime(784):  at android.os.AsyncTask$2.call(AsyncTask.java:287)
07-25 11:18:27.014: E/AndroidRuntime(784):  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() {


        public String uRI;

        @Override
        public void onClick(View v) {
            new asynctask().execute(uRI);
            Intent i = new Intent(MainActivity.this, ListView.class);
            startActivity(i);
        }

        });
    } 
}

      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 = params[0];

             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;
        }}}

JSONParsser クラス

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://example=" + et.getText() + "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{}

    }{

    }}

InstanceofJSONParsser クラス

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

1 に答える 1

2
URI website = new URI("http://example=" + et.getText() + "json");

EditText et をそのビューに接続していません。そのため、et.getText でエラーが発生します。

URI website = new URI("http://example=" + et.getText() + "json");

に変更しますURI website = uRI;

doInBackground の処理中に URI を渡します

お気に入り -

String uRI = "http://www.example.com/example.json";

             JSONObject json = jParser.getJSONFromURI(uRI);
于 2013-07-25T11:53:10.143 に答える