안드로이드 SearchView
조회수 3915회
프레그먼트 안에서 액션바에 searchView를 구현하고 있습니다. 원래 작동이 잘 되었었는데 public class Fragment1 extends android.support.v4.app.Fragment {}
다른 작업 때문에 v4로 extends 한 뒤로는 오류가 납니다 제가 사용한 searchView 위젯은 android.supprot.v7.widget 입니다
MenuItem item = menu.findItem(R.id.action_search); SearchView searchView = (SearchView) item.getActionView();
item.getActionView에서 널포인터익셉션 오류가 납니다.
java.lang.NullPointerException: Attempt to invoke interface method 'android.view.View android.view.MenuItem.getActionView()' on a null object reference at com.example.user.seoulapp.Fragment1.onCreateOptionsMenu(Fragment1.java:132)
해결방법이 어떻게 될까요..?
-
(•́ ✖ •̀)
알 수 없는 사용자
2 답변
-
오히려 간단한 부분이라 뭔가 빠트리지 않았을까 싶은데요. 일단 제가 테스트한 코드 추가했습니다. 코드를 비교하면서 다시 한번 살펴보는게 좋을 것 같습니다
search_menu.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <item android:id="@+id/action_search" android:icon="@android:drawable/ic_menu_search" android:title="Search" app:actionViewClass="android.support.v7.widget.SearchView" app:showAsAction="always" /> </menu>
SearchViewFragment.java
@Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_search_view, container, false); Toolbar toolbar = (Toolbar) view.findViewById(R.id.toolBar); ((AppCompatActivity) getActivity()).setSupportActionBar(toolbar); setHasOptionsMenu(true); return view; } @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.inflate(R.menu.search_menu, menu); SearchView searchView = (SearchView) menu.findItem(R.id.action_search).getActionView(); searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { @Override public boolean onQueryTextSubmit(String s) { return false; } @Override public boolean onQueryTextChange(String s) { return false; } }); }
결과
검색, 클릭 시
-
(•́ ✖ •̀)
알 수 없는 사용자
- 혹시 프레그먼트에 public class Fragment1 extends android.support.v4.app.Fragment 알 수 없는 사용자 2016.10.18 00:57
- 이렇게 extend 시켜도 정상작동이 되나요?? 저도 잘 되다가 저렇게 바꾼 뒤부터 작동을 안해서요 ㅠㅠ 알 수 없는 사용자 2016.10.18 01:01
- 네, android.support.v4.app.Fragment를 상속받고 있고, 정상적으로 동작합니다. 알 수 없는 사용자 2016.10.18 01:09
- 제가 빼먹은게 있었네요 ㅠㅠ 감사합니다! 알 수 없는 사용자 2016.10.18 02:16
-
-
메뉴 xml에서
app:actionViewClass
가 설정이 되어있는지 확인해보시기 바랍니다. 만일 프리픽스가android:actionViewClass
로 되어 있다면 NullPointerException이 발생할 수 있습니다. 아래 코드를 참고하셔서 수정해보세요.<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <item android:id="@+id/action_search" android:icon="@android:drawable/ic_menu_search" android:title="@string/search" app:actionViewClass="android.support.v7.widget.SearchView" app:showAsAction="always" /> </menu>
-
(•́ ✖ •̀)
알 수 없는 사용자
- 되어있습니다ㅠㅠ 그런데도 널포인트가 뜨네요.. 알 수 없는 사용자 2016.10.17 22:16
- 특별히 동작이 안될만한 부분은 없어보이는데 이상하네요. 제가 테스트 한 코드 답변으로 추가했습니다. 알 수 없는 사용자 2016.10.18 00:06
-
댓글 입력