0

以下は、ユーザーを認証するための進行状況ダイアログ ボックスを表示している私のコードです。ユーザー ID またはパスワードが一致しない場合 (応答コードが 200 でない場合)、トースト メッセージを表示したいのですが、警告が表示されます

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 の変更、トースト、ダイアログ ボックスを表示します。別のスレッドでは実行できません。メイン UI スレッドでそれを行う必要があります。aync を使用すると多くの変更が必要になるため、handler を使用するのが簡単な方法です。

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

    } 

ここではJavaではなくandroid.osのハンドラ。

于 2011-11-17T13:01:35.480 に答える
0

バックグラウンドでコードを実行していると思うので、Toast は動作しません。バックグラウンドではなく UI スレッドで Toast を記述する必要があります。このスレッドは UI スレッドを更新できないためです。非常にクリーンで簡単にスレッド化するために AsyncTask を使用することをお勧めします。使用する

于 2011-11-17T12:39:27.863 に答える
0

スコープを getApplicationcontext にするのではなく、「this」または「ActivityName.class」として指定し、check . それをチェックしませんでしたが、うまくいくかもしれません。

于 2011-11-17T12:41:03.980 に答える