android FATAL EXCEPTION:AsyncTask#2

时间:2013-07-25 11:42:06

标签: android json android-asynctask

我得到了一个致命的异常:我的应用程序中的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 Class

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 Class

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();

}}}

1 个答案:

答案 0 :(得分: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);
相关问题