我正在尝试将项目动态添加到列表视图。但是,我遇到了运行时异常。请帮忙。全局变量“值”有问题吗?我尝试通过打印日志进行调试,并且能够看到存储在变量中的值。返回结果时会发生问题(我使用它是因为我从数据库获取信息)

它可以从数据库中很好地获取数据,但是当它返回try块中的结果时
int跳到函数结尾的onther return语句,然后崩溃





public class choose_buffet_items extends AppCompatActivity {
    String []categouries;
    ArrayAdapter adapter;
    private static int SPLASH_TIME_OUT=2000;
    AlertDialog alertDialog;
    private boolean loggedIn = false;
    String type;
    String result;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_choose_buffet_items);
        new JSONParse().execute();
        adapter = new ArrayAdapter<String>(this,
                R.layout.buffet_list_view, categouries);

        ListView listView = (ListView) findViewById(R.id.listView_buffetitem);
        listView.setAdapter(adapter);
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                String s =(String)adapter.getItem(i);
                if(s.equals("Drinks"))
                {
                    Intent numbersIntent = new Intent(choose_buffet_items.this, buffet_drinks.class);
                    startActivity(numbersIntent);
                }
                else if(s.equals("Cakes"))
                {
                    Intent numbersIntent = new Intent(choose_buffet_items.this, buffet_cake.class);
                    startActivity(numbersIntent);
                }
                else if(s.equals("Appetizers"))
                {
                    Intent numbersIntent = new Intent(choose_buffet_items.this,buffet_appetizers.class);
                    startActivity(numbersIntent);
                }
                else {Intent numbersIntent = new Intent(choose_buffet_items.this, buffet_lunch.class);
                    startActivity(numbersIntent);}

            }
        });


        listView.setAdapter(adapter);
    }
    private class JSONParse extends AsyncTask<String, String, String> {
        private ProgressDialog pDialog;

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            alertDialog=new AlertDialog.Builder(choose_buffet_items.this).create();
            alertDialog.setTitle("Upadting Data");
            pDialog = new ProgressDialog(choose_buffet_items.this);
            pDialog.setMessage("Getting Data ...");
            pDialog.setIndeterminate(false);
            pDialog.setCancelable(true);
            pDialog.show();


        }


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



                String login_URL = "http://2f179dfb.ngrok.io/getcat.php";
                try {

                    //Fetching the boolean value form sharedpreferences


                    URL url = new URL(login_URL);
                    HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
                    httpURLConnection.setRequestMethod("POST");
                    httpURLConnection.setDoOutput(true);
                    httpURLConnection.setDoInput(true);

                    InputStream inputStream = httpURLConnection.getInputStream();
                    BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream, "iso-8859-1"));
                    result = "";
                    String line = "";
                    while ((line = bufferedReader.readLine()) != null) {
                        result += line;
                    }
                    bufferedReader.close();
                    inputStream.close();
                    httpURLConnection.disconnect();
                    Log.e("RESULT", result);
                    JSONObject jsonObject = new JSONObject(result);

                    JSONArray result1 = jsonObject.getJSONArray("result");
                    categouries=new String[result1.length()];
                    for (int i = 0; i < result1.length(); i++) {
                        JSONObject c = result1.getJSONObject(i);
                        String category = c.getString("buffCategory");
                        categouries[i]=category;
                    }

                    return result;


                }
                catch (MalformedURLException e) {
                    e.printStackTrace();
                } catch (UnsupportedEncodingException e) {
                    e.printStackTrace();
                } catch (ProtocolException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                } catch (JSONException e) {
                    e.printStackTrace();
                }
                return result;
            }




        @Override
        protected void onPostExecute(String r) {
            adapter.notifyDataSetChanged();
            pDialog.dismiss();



        }
    }
}




日志猫



12-25 02:45:27.532 7109-7109/com.rematchka.weddinghall E/AndroidRuntime: FATAL EXCEPTION: main
                                                                         Process: com.rematchka.weddinghall, PID: 7109
                                                                         java.lang.RuntimeException: Unable to start activity ComponentInfo{com.rematchka.weddinghall/com.rematchka.weddinghall.choose_buffet_items}: java.lang.NullPointerException: storage == null
                                                                             at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
                                                                             at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
                                                                             at android.app.ActivityThread.-wrap11(ActivityThread.java)
                                                                             at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
                                                                             at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                             at android.os.Looper.loop(Looper.java:148)
                                                                             at android.app.ActivityThread.main(ActivityThread.java:5417)
                                                                             at java.lang.reflect.Method.invoke(Native Method)
                                                                             at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                                                                             at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
                                                                          Caused by: java.lang.NullPointerException: storage == null
                                                                             at java.util.Arrays$ArrayList.<init>(Arrays.java:38)
                                                                             at java.util.Arrays.asList(Arrays.java:155)
                                                                             at android.widget.ArrayAdapter.<init>(ArrayAdapter.java:137)
                                                                             at com.rematchka.weddinghall.choose_buffet_items.onCreate(choose_buffet_items.java:49)
                                                                             at android.app.Activity.performCreate(Activity.java:6237)
                                                                             at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
                                                                             at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
                                                                             at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
                                                                             at android.app.ActivityThread.-wrap11(ActivityThread.java) 
                                                                             at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
                                                                             at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                             at android.os.Looper.loop(Looper.java:148) 
                                                                             at android.app.ActivityThread.main(ActivityThread.java:5417) 
                                                                             at java.lang.reflect.Method.invoke(Native Method) 
                                                                             at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                                                                             at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
12-25 02:45:27.962 7109-7473/com.rematchka.weddinghall E/RESULT: {"result":[{"buffCategory":"Drinks"},{"buffCategory":"Cakes"},{"buffCategory":"Appetizers"},{"buffCategory":"Lunch"}]}

最佳答案

当传递给ArrayAdapter(Context,int,T [])的数组参数为null时,抛出此特定异常(“ storage == null”)。

在此行的oncreate方法中:

   adapter = new ArrayAdapter<String>(this,
            R.layout.buffet_list_view, categouries);


Categouries为空,您需要对其进行初始化,然后再执行该行。

10-07 19:21
查看更多