应用程序突然崩溃了。 logcat表示doInBackground()
中存在错误。请帮忙。
代码
private class regjson extends AsyncTask<String, String, String> {
@Override
protected void onPreExecute() {
super.onPreExecute();
Toast.makeText(getApplicationContext(), "in prExecute", Toast.LENGTH_SHORT).show();
}
@Override
protected String doInBackground(String... params) {
try{
Toast.makeText(getApplicationContext(), "in Background", Toast.LENGTH_SHORT).show();
}
catch(Exception e)
{
e.printStackTrace();
Toast.makeText(getApplicationContext(),e.toString(),Toast.LENGTH_SHORT).show() ;
}
return "All Done!";
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
Toast.makeText(getApplicationContext(), "in Post Execute", Toast.LENGTH_SHORT).show();
}
}
这就是我执行它的方式
try{
new regjson().execute("hello");
}
catch(Exception e)
{
Toast.makeText(getApplicationContext(), e.toString(),Toast.LENGTH_LONG);
}
答案 0 :(得分:1)
您无法在Toast
中显示doInBackground()
。我们无法从doInBackground()
更新用户界面,您必须在onPostExecute()
中进行操作。
在docs
中详细了解相关信息所以,你必须删除
Toast.makeText(getApplicationContext(), "in Background", Toast.LENGTH_SHORT).show();
来自你的代码。
如果您使用此Toast进行调试,可以使用Log.d()
之类的,
Log.d("Key","in Background");
您可以在Logcat中看到此Log消息。