嗨,我正在制作访问 MySQL 数据库的登录页面。但是我Activity
总是在完成之前运行检查失败/成功的代码AsyncTask
。
我尝试使用asynctask.get()
方法,但它只是冻结了我的用户界面并且不起作用。
我尝试了这个答案,说我应该在里面调用 result-checker 方法onPostExecute()
。
但是由于我需要更改 TextView 以显示成功/失败,因此会导致NullPointerException
因为我在内部实例化了 TextView onCreate()
。
我无法将 TextView 实例化移动到构造函数中,因为它会返回NullPointerException unable to instantiate activity ComponentInfo
.
登录.java
public class Login extends Activity{
//declare global Views here
protected void onCreate(Bundle bundle){
//Setup views
}
protected void onClick(View v){
//Setup necessary variables
AsyncClass async = new AsyncClass(this);
async.execute(username, password);
}
public void checkSuccess(boolean success){
if(success)
textView1.setText("Success");
else
textView1.setText("Failed");
}
}
异步类.java
public class AsyncClass extends AsyncTask<String, String, JSONObject>{
protected JSONObject doInBackground(String... params){
//access database
}
protected void onPostExecute(JSONObject json){
//read the json result
Login login = new Login();
login.checkSuccess(true);
}
}
有什么解决办法吗?谢谢