21

3 つのタブを持つ TabHost があります。最初のタブのコンテンツは、contentview が 2 つの EditText と 2 つの CheckBox (およびボタン) を含む相対レイアウトであるカスタム アクティビティのインテントです。

各チェックボックスをオンにすると、一方の EditText ともう一方のチェックボックスが有効/無効になります。そして、私は次のようにそれについて行きました:

chkPolaziste.setOnCheckedChangeListener(new OnCheckedChangeListener()
    {
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
        {
            if ( isChecked )
            {
                entryPolaziste.setFocusable(false);
                entryPolaziste.setEnabled(false);
                chkOdrediste.setFocusable(false);
                chkOdrediste.setEnabled(false);
            }
            else
            {
                entryPolaziste.setEnabled(true);
                entryPolaziste.setFocusable(true);
                chkOdrediste.setEnabled(true);
                chkOdrediste.setFocusable(true);
            }
        }
    });

そして、それは機能します。1 つのチェックボックスをオンにすると、他のチェックボックスとその EditText が無効になり、チェックを外すと、EditText と他のチェックボックスが有効になります。しかし、有効にすると、EditText に何も入力できなくなります。クリックすると一瞬フリックし、フォーカスが別のビューに切り替わります。コントロールが完全に有効になっていないように見えます。

また、requestFocus() を使用して再度有効にした EditText にフォーカスを強制しようとし、FocusableInTouchMode() を設定しようとしましたが、どちらも機能しませんでした。

私は Android デバイスを持っていないので、これをエミュレーターでのみテストします (最小 SDK は 1.6 です)。

4

1 に答える 1

43

回避策:

setFocusableInTouchModesetFocusableの両方を使用します。

于 2011-01-22T18:56:32.980 に答える