【发布时间】:2011-07-16 08:16:17
【问题描述】:
我正在创建一个登录表单。用户登录后,会跳转到首页。
我创建了一个具有AsyncTask 的活动。这是我的代码的相关部分:
public class iniTask extends AsyncTask<String, Void, String> {
private ProgressDialog Dialog = new ProgressDialog(GPSTracerActivity.this);
protected void onPreExecute() {
Dialog.setMessage("Connect to server...");
Dialog.show();
}
protected String doInBackground(String... url_req) {
String url = url_req[0];
try {
Log.v("doing background", executeHttpGet(url));
return executeHttpGet(url);
} catch(Exception e) {
Log.v("Exception doing background","Exception:"+e.getMessage());
return "";
}
}
protected void onPostExecute(String result) {
try {
Dialog.dismiss();
// here when thing go wrong
startNewAction(result);
} catch(Exception e) {
Log.v("Exception process response","Exception:"+e.getMessage());
}
}
}
这里是startNewAction(result):
public void startNewAction(String result){
if (result.substring(0, 6) == "300 OK"){
Intent i = new Intent(GPSTracerActivity.this, Home.class);
startActivity(i);
}
}
任务正常启动,但是当我调用startNewAction(result)时,
它没有调用新的活动。为什么?
注意:当我启用 if 结构来测试字符串 == 300 OK 时,它不起作用!为什么
我在logcat看到这个:
07-16 14:57:23.345: WARN/InputManagerService(37): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@40777ee0
【问题讨论】:
-
您是否检查过它是否返回了正确的结果? (即“300 OK”)此外,让你的 onPostExecute 方法除了调用另一个方法之外什么都不做似乎有点毫无意义,你为什么不把你的逻辑放在那里 - 特别是因为它只有 3 行代码!
-
谢谢我已经做了,但它什么也没运行它没有像上面那样调用它显示 log cat 的意图活动,那就是我通过方法调用以另一种方式尝试它。当我尝试放置 if 结构时出现问题,如果我不使用它是否会显示另一个意图,有什么想法吗?
-
不太清楚您的问题是什么,您发布的错误来自视图和输入法(例如软键盘)之间交互的框架类。您是否在尝试打开的活动中使用键盘输入?
-
谢谢肯尼,我的输入是在编辑文本登录然后发送到服务器,可以看出它将发送请求(正确)然后得到响应(正确)然后它必须做新的活动(不正确),为什么?
标签: android android-activity android-asynctask