0

Ich versuche, die Einstellungen Aktivität gemäß den Richtlinien zu implementieren. Ich habe eine EditTextPreference, die ich behalten möchte, aber anstatt dem Benutzer zu erlauben, irgendeinen Wert einzugeben, sollte der Wert über Bluetooth kommen (ich habe den Bluetooth Teil bereit).Wie die Tastatur zu verbergen und EditTextPreference programmgesteuert zu aktualisieren?

Im Moment, wenn die EditTextPreference angeklickt wird, zeigt es das Editor-Popup mit OK und Cancel-Tasten. So möchte ich es haben, damit ich die OK oder Cancel Click-Events behandeln kann.

1) Das erste Problem ist, dass die Tastatur auch angezeigt wird - ich will das nicht, weil der Wert vom Hintergrund kommen sollte. Ich habe diese Eigenschaften hinzugefügt, aber nichts scheint auf Ausblenden der Tastatur um einen Effekt zu haben (auch wenn ich sie um Schalter):

<EditTextPreference 
    android:selectable="true" 
    android:enabled="true" 
    android:editable="true" 
    android:focusable="false" 
    android:focusableInTouchMode="false" 
    android:cursorVisible="false" 
    android:capitalize="words" 
    android:inputType="none" 
    android:maxLines="1" 
    android:selectAllOnFocus="true" 
    android:singleLine="true" 
    android:title="@string/pref_title_id" /> 

2) Das zweite Problem ist: wie ich den Wert des EditTextPreference aktualisiere aus dem Code hinter, so dass der Benutzer nichts eingeben muss, aber nur um den Wert zu sehen und klicken Sie auf OK oder Abbrechen?

3) Drittes Problem/Frage: Ist es in Ordnung, die Werte in einer Datenbank zu speichern, statt die gemeinsamen Voreinstellungen zu verwenden? Grundsätzlich möchte ich die Benutzeroberfläche für allgemeine Einstellungen haben, aber die Werte in einer Datenbank behalten.

Ich hoffe, dass jemand die gleichen Probleme wie ich hatte, weil ich keine Lösungen im Internet finden konnte.

Antwort

0

1.Wenn Sie auf das Bearbeitungsfeld klicken, sollten Sie diese Methode aufrufen, die die Tastatur ausblendet.

private void hideKeyboard() { 
    View view = getCurrentFocus(); 
    if (view != null) { 
     InputMethodManager inputManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
     inputManager.hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); 
} 
} 
  1. Für einen Wert ein, um die editText die Methode verwenden:

    editTextPreferences.setText("Your value"); 
    
  2. Für nur einen Wert speichern, können Sie Gemeinschafts-Preference verwenden, weil seine mehr flexibel, aber wenn Sie mehr Daten speichern und alles in einer Datenbank haben möchten, können Sie SQLite db verwenden. Beide speichern lokale Werte, denn wenn App deinstalliert wird, werden sie gelöscht.

+0

To Hide Danke für deine Antwort. Die erste Antwort scheint nicht zu helfen.Die Tastatur wird immer noch angezeigt. Ich habe den 'EditTextPreference.setOnPreferenceClickListener' behandelt, der die' hideKeyboard() 'Methode aufruft, aber die Tastatur nicht verdeckt. – Apostrofix

+0

Sie können versuchen, EditTextPreference.setOnPreferenceChangeListener(); – user3796978

+0

Es ist immer noch dasselbe. Die 'setOnPreferenceChangeListeer()' wird aufgerufen, dann ruft sie die 'hideKeyboard()' Methode auf, aber sie verdeckt die Tastatur nicht. – Apostrofix

0

Versuchen Sie folgenden Code ein überprüfen Sie die Tastatur nur zu machen, erscheint, wenn ein Benutzer klickt ein EditText.

this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); 

oder

Verwendung android:windowSoftInputMode="stateHidden" im Android Mainfest.xml unter activity Tag

ein Keybord nennen diese Methode in der OnClick-Ereignis

private void hideKeyboard() { 

      View view = getCurrentFocus(); 
      if (view != null) { 
       ((InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE)). 
         hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); 

    } 
Verwandte Themen