0

下面是我的代码,它显示了一个进度对话框来验证用户。当用户 ID 或密码不匹配(响应代码不是 200)但我收到警告时,我想显示 Toast 消息

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

并且吐司消息不显示

代码

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();
        } 
    }
4

3 回答 3

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 的处理程序。

于 2011-11-17T13:01:35.480 回答
0

我认为您正在后台运行代码,因此 Toast 将无法在那里工作您必须在 UI 线程而不是在后台编写 Toast ..因为该线程无法更新 UI 线程..我建议您使用 AsyncTask 进行线程处理,它非常干净且易于利用

于 2011-11-17T12:39:27.863 回答
0

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

于 2011-11-17T12:41:03.980 回答