Android 异步任务会立即使应用程序崩溃
我一直试图在Android中解析一些JSON数据,但遇到了一个问题。我的应用程序在我启动活动时就崩溃了,它似乎抛出了一个NullPointerException,但我不知道是什么问题 守则: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
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开发新手,这很有帮助。