Android AutoCompleteTextView-在performFiltering()期间发生异常!

Android AutoCompleteTextView-在performFiltering()期间发生异常!,android,Android,我在构建AutoCompleteTextView时遇到一些问题 我试图在AutoCompleteTextView中显示一些Json数据,但不起作用 当我试图写一些东西时,我收到了这些错误: W/Filter(13081): An exception occured during performFiltering()! W/Filter(13081): java.lang.NullPointerException at java.util.ArrayList.<init>(Array

我在构建AutoCompleteTextView时遇到一些问题

我试图在AutoCompleteTextView中显示一些Json数据,但不起作用

当我试图写一些东西时,我收到了这些错误:

W/Filter(13081): An exception occured during performFiltering()!

W/Filter(13081): java.lang.NullPointerException at java.util.ArrayList.<init>(ArrayList.java:93)

W/Filter(13081): at android.widget.ArrayAdapter$ArrayFilter.performFiltering(ArrayAdapter.java:457)

W/Filter(13081): at android.widget.Filter$RequestHandler.handleMessage(Filter.java:234)
我的代码:

public class MainActivity extends Activity {

    List<String> responseList;

   @Override
   protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_main);
       AutoCompleteTextView auto1 = (AutoCompleteTextView) findViewById(R.id.autoCompleteTextView1);

       new HttpGetTask().execute();

   } 

   private class HttpGetTask extends AsyncTask<Void, Void, String> {

       String URL = "http://192.168.1.70/example/suggestion.php?name=";
       AndroidHttpClient mClient = AndroidHttpClient.newInstance("");

       @Override
       protected String doInBackground(Void... params) {
           HttpGet request = new HttpGet(URL);
           ResponseHandler<String> responseHandler = new BasicResponseHandler();
           try {
               return mClient.execute(request, responseHandler);
           } catch (ClientProtocolException exception) {
               exception.printStackTrace();
           } catch (IOException exception) {
               exception.printStackTrace();
           }
           return null;
       }

       @Override
       protected void onPostExecute(String result) {
           try {
               JSONArray json = new JSONArray(result);
               Log.v("ResponseCity", result);

               List<String> responseList = new ArrayList<String>();

               for (int i = 0; i < json.length(); i++) {
                  final JSONObject e = json.getJSONObject(i);
                   String name = e.getString("name");
                   responseList.add(name);
                }

           } catch (JSONException e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
           }
           if (null != mClient)
               mClient.close();


       ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this,
               android.R.layout.simple_dropdown_item_1line, responseList);
              AutoCompleteTextView textView = (AutoCompleteTextView)
               findViewById(R.id.autoCompleteTextView1);

       textView.setAdapter(adapter);
   }
   }
}
公共类MainActivity扩展活动{
列出回应者;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
AutoCompleteTextView auto1=(AutoCompleteTextView)findViewById(R.id.autoCompleteTextView1);
新建HttpGetTask().execute();
} 
私有类HttpGetTask扩展异步任务{
字符串URL=”http://192.168.1.70/example/suggestion.php?name=";
AndroidHttpClient mClient=AndroidHttpClient.newInstance(“”);
@凌驾
受保护字符串doInBackground(无效…参数){
HttpGet请求=新的HttpGet(URL);
ResponseHandler ResponseHandler=新BasicResponseHandler();
试一试{
返回mClient.execute(请求、响应句柄);
}捕获(ClientProtocolException异常){
异常。printStackTrace();
}捕获(IOException异常){
异常。printStackTrace();
}
返回null;
}
@凌驾
受保护的void onPostExecute(字符串结果){
试一试{
JSONArray json=新JSONArray(结果);
Log.v(“责任”,结果);
List responseList=new ArrayList();
for(int i=0;i

我做错了什么?谢谢。

发生的情况是抛出了一个
JSONException
,而
responseList
未初始化。JSONException是因为这一行

 JSONArray json = new JSONArray(result);
api调用返回的是
JSONObject
,而不是
JSONArray
。要修复
NPE
,请移动
List responseList=new ArrayList()
块之前尝试
块。这样,如果不更改任何其他内容,则将提供一个空数据集。应用程序不会崩溃(至少使用相同的stacktrace)

 JSONArray json = new JSONArray(result);