【问题标题】:Error creating an AsyncTask创建 AsyncTask 时出错
【发布时间】: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


【解决方案1】:

在你的 onPostExecute 中首先关闭对话框。

Dialog.dismiss();

【讨论】:

  • 哦,对不起,在我的代码中我已经关闭了对话框,只是没有在上面的问题中提出
【解决方案2】:

我刚刚找到了解决办法,因为我比较字符串的方式有一个错误,

应该是,

      if (result.substring(0, 6).equals("300 OK") ){
                Intent i = new Intent(GPSTracerActivity.this, Home.class);
                startActivity(i);               
      }

无论如何,谢谢你的想法!!!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-30
    • 1970-01-01
    • 2012-12-16
    • 2012-07-07
    相关资源
    最近更新 更多