Ich habe eine FragmentActivity
Verwendung von a ViewPager
, um mehrere Fragmente zu bedienen. Jedes ist ein ListFragment
mit dem folgenden Layout:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="8dp">
<ListView android:id="@id/android:list"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
<EditText android:id="@+id/entertext"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>
</LinearLayout>
Beim Starten der Aktivität wird die Softtastatur angezeigt. Um dies zu beheben, habe ich im Fragment Folgendes getan:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
//Save the container view so we can access the window token
viewContainer = container;
//get the input method manager service
imm = (InputMethodManager)getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
. . .
}
@Override
public void onStart() {
super.onStart();
//Hide the soft keyboard
imm.hideSoftInputFromWindow(viewContainer.getWindowToken(), 0);
}
Ich speichere den eingehenden ViewGroup container
Parameter von onCreateView
, um auf das Fenstertoken für die Hauptaktivität zuzugreifen. Dies läuft fehlerfrei, aber die Tastatur wird nicht vor dem Aufruf von hideSoftInputFromWindow
in verborgen onStart
.
Ursprünglich habe ich versucht, das aufgeblasene Layout anstelle von container
:
imm.hideSoftInputFromWindow(myInflatedLayout.getWindowToken(), 0);
aber dies warf ein NullPointerException
, vermutlich weil das Fragment selbst keine Aktivität ist und kein eindeutiges Fenstertoken hat?
Gibt es eine Möglichkeit, die Softtastatur innerhalb eines Fragments auszublenden, oder sollte ich eine Methode in der erstellen FragmentActivity
und sie innerhalb des Fragments aufrufen?