나는 여러 조각을 제공하기 위해 FragmentActivity
사용하고 ViewPager
있습니다. 각각의 ListFragment
레이아웃은 다음과 같습니다.
<?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>
활동을 시작하면 소프트 키보드가 표시됩니다. 이 문제를 해결하기 위해 조각 내에서 다음을 수행했습니다.
@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);
}
기본 활동에 대한 창 토큰에 액세스하는 방법으로 들어오는 ViewGroup container
매개 변수를 저장합니다 onCreateView
. 이것은 오류없이 실행되지만 키보드는 hideSoftInputFromWindow
in에 대한 호출에서 숨겨지지 않습니다 onStart
.
원래는 대신 부풀려진 레이아웃을 사용해 보았습니다 container
.
imm.hideSoftInputFromWindow(myInflatedLayout.getWindowToken(), 0);
그러나 이것은 NullPointerException
아마도 조각 자체가 활동이 아니고 고유 한 창 토큰이 없기 때문에.
조각 내에서 소프트 키보드를 숨기는 방법이 있습니까, 아니면에서 메서드를 만들고 FragmentActivity
조각 내에서 호출해야합니까?