这是我的注册函数。
如果我从服务器获得正确的反馈,它会将 isCreated 更改为 true boolean 值并移至下一个 Activity 。
问题是 boolean 值无法编辑,需要再次单击按钮才能转到下一个 Activity(只有单击按钮后 boolean 值才能设置为 true)?
public void onClick(View view) {
switch(view.getId()){
case R.id.register:
if(!validate())
Toast.makeText(getBaseContext(), "Enter user information!", Toast.LENGTH_LONG).show();
// call AsynTask to perform network operation on separate thread
new HttpAsyncTask().execute(herokuServer);
if (isCreated)startActivity(new Intent(this, Preference.class));
break;
}
private class HttpAsyncTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... urls) {
newAccount = new userAccount();
newAccount.setPassword(password.getText().toString());
newAccount.setEmail(email.getText().toString());
return POST(urls[0],newAccount);
}
// onPostExecute displays the results of the AsyncTask.
@Override
protected void onPostExecute(String result) {
if (result.equals("Welcome to Opshun!"))isCreated = true;
//if (!result.equals("Welcome to Opshun!")) result = "Please use your email to register!";
Toast.makeText(getBaseContext(), result, Toast.LENGTH_LONG).show();
}
}
有什么办法可以解决吗?
最佳答案
这就是AsyncTask
背后的全部要点;它将长时间运行的操作从 UI
Thread
中移出。通过这样做,UI
Thread
可以“继续”执行,而由 AsyncTask
启动的 Thread
则执行繁重的工作。值类操作。
一种可能的解决方案是在 SharedPreferences
中存储一个 boolean 值,以确定 AsyncTask
是否已运行。
如果您想要在AsyncTask
完成时收到通知,则需要使用接口(interface)创建委托(delegate)。 This answer 展示了如何做到这一点。
关于java - Android如何在第一次从数据获取信息时转到其他 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29980804/