1

パスワードを入力したいAndroidアプリケーションがあり、それが正しい場合は、新しいアクティビティに移動します。このために、EditTextフィールドを含むカスタムダイアログを表示しました。パスワードが正しい場合は、kayboardを非表示にして、次のアクティビティに進みます。キーボードを非表示にするために次のコードを使用しました。

    alertBuilder.setNeutralButton("OK",
        new DialogInterface.OnClickListener() {
        @Override
         public void onClick(DialogInterface dialog, int which) {
             InputMethodManager inputMethodManager = (InputMethodManager)getSystemService(Activity.INPUT_METHOD_SERVICE); inputMethodManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
         new Thread(new Runnable() {
         @Override
         public void run() {
              //start new acivity for result
         }
        }).start();

    }
});

そして、ダイアログの[OK]ボタンのonClickのスレッド内でstartActivityForResult(intent、requestCode)を使用して次のアクティビティをロードします。ただし、次のアクティビティをロードする前に、キーボードを非表示にした後、背景画像に次のような黒い下のバーが表示されます。これ

このアクティビティに戻ると、背景画像がしばらくこのように表示されます。intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);を試しました。マニフェストファイルでこのアクティビティのandroid:windowSoftInputMode="adjustPan"を設定します。それは私にはうまくいきません。ここでの問題は何ですか、そしてこれをどのように修正しますか?

前もって感謝します

4

1 に答える 1

0

キーボードを閉じた後、ランナブルで少し待って、アクティビティの背景を塗り直します。

を使用しHandlerて、わずかな遅延を待ち、UIスレッドに戻ります。

これをクラスに追加します

private Handler mHandler = new Handler();

ランナブルを定義する

private Runnable mRunnable = new Runnable() {
    public void run() {
        startActivityForResult(intent, resultCode);
    }
};

コードを更新します

alertBuilder.setNeutralButton("OK", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        InputMethodManager inputMethodManager = (InputMethodManager)getSystemService(Activity.INPUT_METHOD_SERVICE);
        inputMethodManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);

        // Wait a moment and jump to the next activity.
        mHandler.postDelayed(mRunnable, 500);
    }
});
于 2013-03-25T07:01:00.953 に答える