2

現在、3段階認証ウィザードを備えたアプリに取り組んでいます。

ウィザードの次のステップに進む代わりにキーボードを閉じることができるように、ユーザーが全画面表示でテキストを編集しているかどうかを知る必要があります。

現在、アクティビティが回転した後に次のコードが誤った結果を返すという厄介な問題に直面しています。

    private boolean isFullscreenInputMode(EditText edit) {
        InputMethodManager imm = (InputMethodManager)edit.getContext().getSystemService( Context.INPUT_METHOD_SERVICE  );
        return imm.isFullscreenMode();
    }

このコードは、キーボードがフルスクリーン モードであるかどうかを検出し、ExtractEditText を入力に使用することを目的としています。

アプリがランドスケープ モードで開始し、3 ステップのウィザード全体を続行すると、このメソッドは true を返します。途中で携帯電話を1回回転させると、機能しなくなります。

注: 呼び出しは onPause または onResume コールバック メソッドでは実行されません。他の投稿から理解したように、これらはメソッドが間違った値を返す可能性がある状況です。

または、キーボードがフルスクリーン モードかどうかを検出する別の方法はありますか?

前もって感謝します!

編集 EditText ビューの「完了」ボタンに editorActionListener コードを追加します。

        edit.setOnEditorActionListener( new TextView.OnEditorActionListener() {
        @Override
        public boolean onEditorAction( TextView v, int actionId, KeyEvent event ) {
            if( actionId == EditorInfo.IME_ACTION_DONE && edit.getText().length() >= minKeys ) {

                if( !isFullscreenInputMode(edit) ) {
                    performOkPress( edit, okButton, result );
                }
                else {
                    return false;
                }

                return true;
            }
            return false;
        }

        private void performOkPress( final EditText edit, final Button okButton, final ViewResult result ) {
            if( okButton.isEnabled() ) {
                okPressed( edit, okButton, result );
            }
        }
    } );
4

1 に答える 1

0

画面を回転させているときは、向きを縦向きから横向きに、またはその逆に変更していることを意味します..そして毎回、 onCreate が何度も呼び出されます. これが、これらの誤った結果が表示される理由です。回転時にアクティビティの状態を保存してみてください...うまくいけば、それが役立つことを願っています

于 2013-02-26T08:29:18.257 に答える