2017-01-17 6 views
3

フラグメント内にMaterialSearchViewカスタムツールバーを追加しようとしています。MaterialSearchViewをフラグメントで使用する方法

最初に、私はそれのxmlレイアウトを作成しました。

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <FrameLayout 
     android:id="@+id/toolbar_container" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar2" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      android:background="@color/colorAccent"/> 
     <com.miguelcatalan.materialsearchview.MaterialSearchView 
      android:id="@+id/search_view" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" /> 
    </FrameLayout> 
</LinearLayout> 

search_view.xmlは、それから私は、私はカスタムアクションバーを追加したフラグメントのクラスに続いて、メニュー項目...

<?xml version="1.0" encoding="utf-8"?> 
    <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:title="@string/app_name" 
      android:icon="@drawable/ic_action_action_search" 
      app:showAsAction="collapseActionView|ifRoom" 
      /> 
    </menu> 

を追加しました。それをテストした後、コードは正常に機能しました。私はMaterialSearchViewを追加したときしかし..アプリケーションが

だからここ

私のJavaコードがある..一部

public class searchView extends Fragment{ 

     Toolbar search; 
     MaterialSearchView search_view; 
     @Nullable 
     @Override 
     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
      View v = inflater.inflate(R.layout.search_view,container,false); 
      LinearLayout layout = (LinearLayout) inflater.inflate(R.layout.search_view, container, false); 

      search = (Toolbar)layout.findViewById(R.id.toolbar2); 
      ((AppCompatActivity) getActivity()).setSupportActionBar(search); 
      ((AppCompatActivity) getActivity()).getSupportActionBar().setTitle("Contacts"); 

      return v; 
     } 

     @Override 
     public void onCreateOptionsMenu (Menu menu, MenuInflater inflater) { 

      inflater.inflate(R.menu.search,menu); 
      super.onCreateOptionsMenu(menu, inflater); 
      search_view = (MaterialSearchView) getView().findViewById(R.id.search_view); 
      final MenuItem item = menu.findItem(R.id.action_search); 
      search_view.setMenuItem(item); 
     } 
    } 

完全なエラーログが..だからここにこんなに大きくされている応答を停止します

01-17 19:46:57.968 17920-17920/? A/art: art/runtime/runtime.cc:422] at android.view.LayoutInflater.inflate(LayoutInflater.java:426) 
    01-17 19:46:57.968 17920-17920/? A/art: art/runtime/runtime.cc:422] at com.miguelcatalan.materialsearchview.MaterialSearchView.initiateView(MaterialSearchView.java:143) 
    01-17 19:46:57.968 17920-17920/? A/art: art/runtime/runtime.cc:422] at com.miguelcatalan.materialsearchview.MaterialSearchView.<init>(MaterialSearchView.java:93) 
    01-17 19:46:57.968 17920-17920/? A/art: art/runtime/runtime.cc:422] at com.miguelcatalan.materialsearchview.MaterialSearchView.<init>(MaterialSearchView.java:85) 
    01-17 19:46:57.968 17920-17920/? A/art: art/runtime/runtime.cc:422] at java.lang.reflect.Constructor.newInstance0!(Native method) 
    01-17 19:46:57.968 17920-17920/? A/art: art/runtime/runtime.cc:422] at java.lang.reflect.Constructor.newInstance(Constructor.java:430) 
    01-17 19:46:57.968 17920-17920/? A/art: art/runtime/runtime.cc:422] at android.view.LayoutInflater.createView(LayoutInflater.java:645) 
    01-17 19:46:57.968 17920-17920/? A/art: art/runtime/runtime.cc:422] at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:787) 
    01-17 19:46:57.968 17920-17920/? A/art: art/runtime/runtime.cc:422] at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:727) 
    01-17 19:46:57.968 17920-17920/? A/art: art/runtime/runtime.cc:422] at android.view.LayoutInflater.rInflate(LayoutInflater.java:858) 
    01-17 19:46:57.968 17920-17920/? A/art: art/runtime/runtime.cc:422] at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821) 
    01-17 19:46:57.968 17920-17920/? A/art: art/runtime/runtime.cc:422] at android.view.LayoutInflater.rInflate(LayoutInflater.java:861) 
    01-17 19:46:57.968 17920-17920/? A/art: art/runtime/runtime.cc:422] at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821) 
    01-17 19:46:57.968 17920-17920/? A/art: art/runtime/runtime.cc:422] at android.view.LayoutInflater.inflate(LayoutInflater.java:518) 
    01-17 19:46:57.968 17920-17920/? A/art: art/runtime/runtime.cc:422] - locked <0x0cb4b03a> (a java.lang.Object[]) 
    01-17 19:46:57.968 17920-17920/? A/art: art/runtime/runtime.cc:422] at android.view.LayoutInflater.inflate(LayoutInflater.java:426) 
    01-17 19:46:57.968 17920-17920/? A/art: art/runtime/runtime.cc:422] at com.miguelcatalan.materialsearchview.MaterialSearchView.initiateView(MaterialSearchView.java:143) 
    01-17 19:46:57.968 17920-17920/? A/art: art/runtime/runtime.cc:422] at com.miguelcatalan.materialsearchview.MaterialSearchView.<init>(MaterialSearchView.java:93) 
    01-17 19:46:57.968 17920-17920/? A/art: art/runtime/runtime.cc:422] at com.miguelcatalan.materialsearchview.MaterialSearchView.<init>(MaterialSearchView.java:85) 
    01-17 19:46:57.968 17920-17920/? A/art: art/runtime/runtime.cc:422] at java.lang.reflect.Constructor.newInstance0!(Native method) 
    01-17 19:46:57.968 17920-17920/? A/art: art/runtime/runtime.cc:422] at java.lang.reflect.Constructor.newInstance(Constructor.java:430) 
    01-17 19:46:57.968 17920-17920/? A/art: art/runtime/runtime.cc:422] at android.view.LayoutInflater.createView(LayoutInflater.java:645) 
    01-17 19:46:57.968 17920-17920/? A/art: art/runtime/runtime.cc:422] at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:787) 
    01-17 19:46:57.968 17920-17920/? A/art: art/runtime/runtime.cc:422] at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:727) 
    01-17 19:46:57.968 17920-17920/? A/art: art/runtime/runtime.cc:422] at android.view.LayoutInflater.rInflate(LayoutInflater.java:858) 
    01-17 19:46:57.968 17920-17920/? A/art: art/runtime/runtime.cc:422] at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821) 
    01-17 19:46:57.968 17920-17920/? A/art: art/runtime/runtime.cc:422] at android.view.LayoutInflater.rInflate(LayoutInflater.java:861) 
    01-17 19:46:57.968 17920-17920/? A/art: art/runtime/runtime.cc:422] at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821) 
    01-17 19:46:57.969 17920-17920/? A/art: art/runtime/runtime.cc:422] at android.view.LayoutInflater.inflate(LayoutInflater.java:518) 
    01-17 19:46:57.969 17920-17920/? A/art: art/runtime/runtime.cc:422] - locked <0x0cb4b03a> (a java.lang.Object[]) 
    01-17 19:46:57.969 17920-17920/? A/art: art/runtime/runtime.cc:422] at android.view.LayoutInflater.inflate(LayoutInflater.java:426) 
    01-17 19:46:57.969 17920-17920/? A/art: art/runtime/runtime.cc:422] at com.miguelcatalan.materialsearchview.MaterialSearchView.initiateView(MaterialSearchView.java:143) 
    01-17 19:46:57.969 17920-17920/? A/art: art/runtime/runtime.cc:422] at com.miguelcatalan.materialsearchview.MaterialSearchView.<init>(MaterialSearchView.java:93) 
    01-17 19:46:57.969 17920-17920/? A/art: art/runtime/runtime.cc:422] at com.miguelcatalan.materialsearchview.MaterialSearchView.<init>(MaterialSearchView.java:85) 
    01-17 19:46:57.969 17920-17920/? A/art: art/runtime/runtime.cc:422] at java.lang.reflect.Constructor.newInstance0!(Native method) 
    01-17 19:46:57.969 17920-17920/? A/art: art/runtime/runtime.cc:422] at java.lang.reflect.Constructor.newInstance(Constructor.java:430) 
    01-17 19:46:57.969 17920-17920/? A/art: art/runtime/runtime.cc:422] at android.view.LayoutInflater.createView(LayoutInflater.java:645) 
    01-17 19:46:57.969 17920-17920/? A/art: art/runtime/runtime.cc:422] at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:787) 
    01-17 19:46:57.969 17920-17920/? A/art: art/runtime/runtime.cc:422] at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:727) 
01-17 19:46:58.178 17920-17920/? A/art: art/runtime/runtime.cc:427] Summary: 
01-17 19:46:58.178 17920-17920/? A/art: art/runtime/runtime.cc:427]  503 of com.miguelcatalan.materialsearchview.MaterialSearchView (503 unique instances) 
01-17 19:46:58.178 17920-17920/? A/art: art/runtime/runtime.cc:427]   1 of java.lang.ClassNotFoundException 
01-17 19:46:58.178 17920-17920/? A/art: art/runtime/runtime.cc:427]   1 of java.lang.NoClassDefFoundError 
01-17 19:46:58.178 17920-17920/? A/art: art/runtime/runtime.cc:427]   4 of java.lang.String (4 unique instances) 
01-17 19:46:58.178 17920-17920/? A/art: art/runtime/runtime.cc:427]   2 of java.lang.Class (2 unique instances) 
01-17 19:46:58.178 17920-17920/? A/art: art/runtime/runtime.cc:427]   1 of java.lang.String[] (4 elements) 
01-17 19:46:58.178 17920-17920/? A/art: art/runtime/runtime.cc:427] 
01-17 19:46:58.178 17920-17920/? A/art: art/runtime/runtime.cc:427] 
01-17 19:46:58.178 17920-17920/? A/libc: Fatal signal 6 (SIGABRT), code -6 in tid 17920 (buckydroid.chat) 

             [ 01-17 19:46:58.178 357: 357 W/   ] 
             debuggerd: handling request: pid=17920 uid=10147 gid=10147 tid=17920 

あなたはこのようなあなたのフラグメントでsetHasOptionsMenuを追加する必要があります。..

答えて

0

ありがとう:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setHasOptionsMenu(true); 
} 
+0

ため

search_view = (MaterialSearchView) getView().findViewById(R.id.search_view); 

search_view = (MaterialSearchView) getActivity().findViewById(R.id.search_view); 

に私のコードを変更してまだ働いていない – Doge

+0

も...そのように大きなエラーログを追加しました...だから私は追加することができていますその一部 – Doge

0

同じ問題がありました。例

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

@Override 
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
     super.onCreateOptionsMenu(menu, inflater); 
     inflater.inflate(R.menu.menu_main, menu); 
     MaterialSearchView searchView = (MaterialSearchView) getActivity().findViewById(R.id.search_view); 
     final MenuItem item = menu.findItem(R.id.action_search); 
     searchView.setMenuItem(item);} 
} 
関連する問題