這是我的課是如何構建的線框:解僱ProgressDialog和線程的AsyncTask顯示吐司
public class HelloWorldActivity extends Activity
{
private ProgressDialog progressdialog;
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
private class AuthenticateUserTask extends AsyncTask<Void,Void,String>
{
protected String doInBackground(Void... params)
{
//do something
}
protected void onPostExecute(String result)
{
if (result.equals("success"))
//do something
else
{
progressdialog.dismiss(); //this throws a null pointer exception
/*
When above line is commented to allow execution of app, Toast never shows on screen
however no errors are recorded in the log
*/
Toast.makeText(getApplicationContext(),"Login failed",Toast.LENGTH_SHORT);
}
}
}
public void login(View v)
{
progressdialog.show(HelloWorldActivity.this,"","Logging in...",true);
new AuthenticateUserTask().execute();
}
}
對不起,如果它似乎我問一個線程兩個問題,但我懷疑兩者的解決方案都相似。
在onPostExecute:
1.如果登錄失敗,我做progressdialog.dismiss()
,一個null pointer exception
拋出和應用程序崩潰。
2.如果我刪除ProgressDialog
並試圖顯示Toast
,沒有顯示在屏幕上,但是沒有任何異常或錯誤要麼記錄。
編輯
我發現在另一個線程here解決我的第一個問題。 我必須在onPreExecute
方法中顯示ProgressDialog
。
獲取有關的AsyncTask信息哦天啊!你對'.show()'是正確的。嘆。謝謝! – xbonez