Toast消息未显示,发出警告:窗口已经聚焦,忽略了焦点增益:com.android.internal.view

时间:2011-11-17 12:28:05

标签: android android-view

以下是我的代码,即显示用于对用户进行身份验证的进度对话框。 我想在用户标识或密码不匹配时显示Toast消息(响应代码不是200) 但是我收到了警告

WARN/InputManagerService(58): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy 

并且没有显示toast消息

new Thread() {
        public void run() {
            Looper.prepare();
                try {
                    performBackgroundProcess();
                    } catch (Exception e) {
                    Log.e("tag", e.getMessage());
                    }
                }
                }.start();



    private void performBackgroundProcess() {
        String sUserName = usernameEditText.getText().toString();
        String sPassword = String authentication = sUserName + ":" + sPassword;
        String login = Base64.encodeToString(authentication.getBytes(),
                            Base64.NO_WRAP);
        Resources res = getResources();
        String URLLogin = res.getString(R.string.URLlogin);
        RestClient client = new RestClient(URLLogin, login);
        try {
            client.Execute(RequestMethod.POST);
            } catch (Exception e) {
            e.printStackTrace();
            }
        if (client.getResponseCode() != 200) {
            progressDialog.dismiss();
            Toast.makeText(getApplicationContext(),"Username or Password does not match",Toast.LENGTH_SHORT).show();
        } 
    }

3 个答案:

答案 0 :(得分:2)

查看您想要的任何UI更改,Toast,对话框,您不能拥有另一个线程。您必须在主UI线程上执行此操作。一个简单的方法是使用处理程序,因为使用aync现在必须进行许多更改。

  new Handler().post( new Runnable() {
                  public void run() {
                        progressDialog.dismiss();
        Toast.makeText(getApplicationContext(),"Username or Password does not match",Toast.LENGTH_SHORT).show();
                  }
          });

    } 

android.os的处理程序不是java的。

答案 1 :(得分:0)

我认为你是在后台运行代码所以Toast不会在那里工作你必须在UI线程上写Toast而不是在背景上..因为这个线程无法更新UI线程..我建议你使用AsyncTask进行线程非常干净并且易于使用

答案 2 :(得分:0)

而不是使范围getApplicationcontext将其作为'this'或'ActivityName.class'并检查。 没检查,但可能会有效。