Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 异步任务会立即使应用程序崩溃_Android_Json_Android Asynctask - Fatal编程技术网

Android 异步任务会立即使应用程序崩溃

Android 异步任务会立即使应用程序崩溃,android,json,android-asynctask,Android,Json,Android Asynctask,我一直试图在Android中解析一些JSON数据,但遇到了一个问题。我的应用程序在我启动活动时就崩溃了,它似乎抛出了一个NullPointerException,但我不知道是什么问题 守则: MyFirstMethod myfirst; private CardUI mCardView; private String Url = "http://www.lgb.dk/test.json"; @Override protected void onCreate(Bundle savedIn

我一直试图在Android中解析一些JSON数据,但遇到了一个问题。我的应用程序在我启动活动时就崩溃了,它似乎抛出了一个NullPointerException,但我不知道是什么问题

守则:

    MyFirstMethod myfirst;
private CardUI mCardView;
private String Url = "http://www.lgb.dk/test.json";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_display_track);
    // Show the Up button in the action bar.
    setupActionBar();

    Intent intent = getIntent();
    String trackNumber = intent.getStringExtra(MainActivity.TRACKNUMBER);

    // init CardView
    mCardView = (CardUI) findViewById(R.id.cardsview);
    mCardView.setSwipeable(false);

    myfirst.execute(Url);

    // add one card
    //mCardView.addCard(new MyCard("", "Some content!"));

    // draw cards
    mCardView.refresh();
}

public class MyFirstMethod extends AsyncTask<String, Void, String> {
    ProgressDialog dialog;

    @Override
    protected void onPreExecute() {

        super.onPreExecute();
        dialog = new ProgressDialog(DisplayTrackActivity.this);
        dialog.setMessage("Loading....");
        dialog.show();

    }

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

        String url = urls[0];

        StringBuilder builder = new StringBuilder();
        HttpClient client = new DefaultHttpClient();
        HttpGet httpGet = new HttpGet(url);
        try {
          HttpResponse response = client.execute(httpGet);
          StatusLine statusLine = response.getStatusLine();
          int statusCode = statusLine.getStatusCode();
          if (statusCode == 200) {
            HttpEntity entity = response.getEntity();
            InputStream content = entity.getContent();
            BufferedReader reader = new BufferedReader(new InputStreamReader(content));
            while ((reader.readLine()) != null) {
              //builder.append(line);
            }
          } else {
            Log.e(DisplayTrackActivity.class.toString(), "Failed to download file");
          }
        } catch (ClientProtocolException e) {
          e.printStackTrace();
        } catch (IOException e) {
          e.printStackTrace();
        }
        String result = builder.toString();

        return result;
    }

    @Override
    protected void onPostExecute(String result) {

        try {
          JSONArray jsonArray = new JSONArray(result);
          Log.i(DisplayTrackActivity.class.getName(),
              "Number of entries " + jsonArray.length());
          for (int i = 0; i < jsonArray.length(); i++) {
            JSONObject jsonObject = jsonArray.getJSONObject(i);
            mCardView.addCard(new MyCard(DisplayTrackActivity.class.getName(), jsonObject.getString("eventDescription")));
          }
        } catch (Exception e) {
          e.printStackTrace();
        }

        super.onPostExecute(result);
        dialog.dismiss();
        dialog.cancel();

    }

}
当你打电话的时候

myfirst.execute(Url);
在onCreate()中,MyFirstMethod myFirst尚未实例化

这是一个简单的解决方案:

myFirst = new MyFirstMethod();
myFirst.execute(url);
当你打电话的时候

myfirst.execute(Url);
在onCreate()中,MyFirstMethod myFirst尚未实例化

这是一个简单的解决方案:

myFirst = new MyFirstMethod();
myFirst.execute(url);

您尚未初始化asynck任务对象

myFirst = new MyFirstMethod();
myFirst.execute(url);

您尚未初始化asynck任务对象

myFirst = new MyFirstMethod();
myFirst.execute(url);
而不是这个

       myfirst.execute(Url);
用这个

      new MyFirstMethod().execute(Url); 

                   or
      myfirst = new MyFirstMethod();
      myfirst.execute(Url); 
而不是这个

       myfirst.execute(Url);
用这个

      new MyFirstMethod().execute(Url); 

                   or
      myfirst = new MyFirstMethod();
      myfirst.execute(Url); 

非常感谢。我是Android开发新手,这很有帮助。谢谢!我是Android开发新手,这很有帮助。