这是我的课是如何构建的线框:解雇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