Asysntask空指针异常

时间:2020-03-22 12:42:43

标签: java android nullpointerexception android-asynctask

我正在做一个天气应用程序,并且出现了一个空指针异常,我不明白如何解决此问题

代码是:

public class MainActivity extends AppCompatActivity {

   EditText editText;
   TextView textView;

    String city="";


    String main ="",Description="";

   public class WeatherReport extends AsyncTask<String,Void,String>{

       @Override
       protected String doInBackground(String... urls) {

           StringBuilder Aresult= new StringBuilder();
           URL url;
           HttpURLConnection httpConnect=null;

           try{

               url=new URL(urls[0]);
               httpConnect=(HttpURLConnection) url.openConnection();

               httpConnect.connect();

               InputStream inStream =httpConnect.getInputStream();

               InputStreamReader inReader=new InputStreamReader(inStream);

               int data;

               data=inReader.read();
               char cur;

               while(data!=-1){

                   cur=(char)data;
                  Aresult.append(cur);
                   data=inReader.read();

               }

               return Aresult.toString();

           }
           catch (Exception e){

               e.printStackTrace();
                 return null;

           }

       }

       @Override
       protected void onPostExecute(String result) {
           super.onPostExecute(result);


          try {
               JSONObject jsonObject =new JSONObject(result);

               String weather=jsonObject.getString("weather");

               String msg="";

               JSONArray jsonArray=new JSONArray(weather);



                   JSONObject jsonObject1=jsonArray.getJSONObject(0);
                   main=jsonObject1.getString("main");
                   Description=jsonObject1.getString("description");

                   if(!main.equals("") && !Description.equals("")){

                       msg="Main weather :"+main+"Description :"+Description +"  ";
                   }



               if(!msg.equals("")){

                   textView.setText(msg);
               }


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

           }
       }
   }

   public void makeURL(View view){

       WeatherReport wthReport=new WeatherReport();

       city=editText.getText().toString();

       String execute1="http://api.openweathermap.org/data/2.5/weather?q=Kolkata,in&APPID=9d7a112d29791383c09ed13256996f13";

      wthReport.execute(execute1);

       Log.i("Result ",execute1);

             InputMethodManager inputMethodManager=(InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);


       inputMethodManager.hideSoftInputFromWindow(editText.getWindowToken(),0);

   }

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

        editText=findViewById(R.id.editText);
        textView=findViewById(R.id.textView2);



    }
}

我也确实添加了使用互联网的权限,并且我的互联网正在运行。

日志显示:

2020-03-22 18:00:19.214 12098-12098/? E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.satyaki.lasttry, PID: 12098
    java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()' on a null object reference
        at org.json.JSONTokener.nextCleanInternal(JSONTokener.java:116)
        at org.json.JSONTokener.nextValue(JSONTokener.java:94)
        at org.json.JSONObject.<init>(JSONObject.java:159)
        at org.json.JSONObject.<init>(JSONObject.java:176)
        at com.satyaki.lasttry.MainActivity$WeatherReport.onPostExecute(MainActivity.java:87)
        at com.satyaki.lasttry.MainActivity$WeatherReport.onPostExecute(MainActivity.java:34)
        at android.os.AsyncTask.finish(AsyncTask.java:695)
        at android.os.AsyncTask.access$600(AsyncTask.java:180)
        at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:712)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:201)
        at android.app.ActivityThread.main(ActivityThread.java:6810)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:873)

0 个答案:

没有答案