2016-05-14 32 views
1
すべての

まず、あなたの(将来の)回答ありがとうございました:)FragmentでSearchViewを使用する方法はありますか?

私の問題の説明以下:

私はMainActivityという名前の私のメインの活動を持っていると私はそれの内部でフラグメントを使用しています。私のフラグメントにはSearchViewとListViewがあり、ユーザーの入力に応じた提案が含まれています...私はActionBarではなく私のレイアウトファイルで使用しています...

ここはfragment_board_menuです。 XML、xmlファイルには、私の断片BoardMenuFragmentに嘘をつい:

<android.support.v7.widget.SearchView 
     android:id="@+id/board_searchView" 
     android:layout_marginLeft="3dp" 
     android:layout_marginStart="3dp" 
     android:background="@color/green" 
     app:searchIcon="@drawable/ic_search" 
     app:searchHintIcon="@drawable/ic_search" 
     app:closeIcon="@drawable/ic_close" 
     app:defaultQueryHint="@string/create_newboard_hint" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" /> 

    <ListView 
     android:layout_below="@+id/board_searchView" 
     android:background="@drawable/listview_border" 
     android:layout_marginBottom="@dimen/listview_border_marginBottom" 
     android:layout_marginLeft="3dp" 
     android:layout_marginStart="3dp" 
     android:id="@+id/board_listView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"> 

彼はBoardMenuFragment.javaで、私のフラグメントのJavaファイル:

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    View view = inflater.inflate(R.layout.fragment_board_menu, container, false); 
    setupSearchView(view); 

    // LISTVIEW 
    // TODO This view is an example, don't forget to delete it 
    values = new ArrayList<>(); 
    values.add("pomme"); 
    values.add("poire"); 
    values.add("banane"); 
    values.add("cerise"); 
    values.add("citron"); 
    adapter = new ArrayAdapter<>(getActivity(), android.R.layout.simple_expandable_list_item_1, android.R.id.text1, values); 
    board_listView.setAdapter(adapter); 

    return view; 
} 

private void setupSearchView(View view) { 
    SearchManager searchManager = (SearchManager) getActivity().getSystemService(Context.SEARCH_SERVICE); 
    final SearchView searchView = (SearchView) view.findViewById(R.id.searchView); 
    SearchableInfo searchableInfo = searchManager.getSearchableInfo(getActivity().getComponentName()); 
    searchView.setSearchableInfo(searchableInfo); 
} 

しかし、私はある例外があります。

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.SearchView.setSearchableInfo(android.app.SearchableInfo)' on a null object reference 

だから私の質問です:私はsetOnQueryTextListenerを使用して、それを実行しようとしましたので、それが可能SearchManagerSearchableInfoを使用してでフラグメントSearchViewを使用することですそれが動作しますが、私はSearchableActivityを作成するチュートリアルの多くを見たので、それを行うための最善の方法だとは思わない...

答えて

0

私は同様の質問があった答えin this question SearchableActivityのコンポーネント名を取得する必要があります。

new ComponentName(this, SearchableActivity.class) 
関連する問題