2017-01-04 12 views
-1

Пожалуйста, предоставьте мне лучшее решение, если у вас есть, я работаю на приложение для Android, в которой на домашней деятельности, используя TabLaout & ViewPager я добавил 5 вкладок на рисункеКак добавить поиск в панели действий на одном из фрагментов в динамике вкладок динамически?

  1. Главная
  2. социальной
  3. Уведомление
  4. Поиск
  5. Ссылки

я поставил MainActivi ty в значениях/стиле, но я разместил собственный тег action в файле search.xml. Я знаю, как добавлять SearchView в панель действий в действие, но я сталкиваюсь с проблемами с использованием фрагментов. Моя цель - просто показать виджет вида поиска на панели действий, когда пользователь будет на вкладке «Поиск». На других вкладках я не хочу показывать. Далее я добавил <meta-data android:name="android.app.searchable" android:resource="@xml/searchable"/> в файле манифеста в теге и setHasOptionsMenu (true); в разделе Поиск фрагмента. Но панель действий отображается на экране поиска без поиска View Widget, пожалуйста, поправьте меня, где я делаю неправильно.

+0

Чувак ваш действительно собираешься нужно поделиться своими код в вашем (Search) фрагменте, если вы хотите больше помочь в этом, мы не можем догадаться о вас tup, стилей/тем или логики программирования. –

ответ

0

Вы должны добавить SearchView только в searchFragment:

класс searchFragment:

@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
View rootView = inflater.inflate(R.layout.fragment_news, container, false); 
...   
    setHasOptionsMenu(true); 
..... 
return rootView ;} 
@Override 
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
     super.onCreateOptionsMenu(menu, inflater); 
     inflater.inflate(R.menu.menu_search, menu); 
     try { 
      // Associate searchable configuration with the SearchView 
      SearchManager searchManager = 
        (SearchManager) getActivity().getSystemService(Context.SEARCH_SERVICE); 
      SearchView searchView = 
        (SearchView) menu.findItem(R.id.action_search).getActionView(); 
      searchView.setSearchableInfo(
        searchManager.getSearchableInfo(getActivity().getComponentName())); 
      searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { 
       @Override 
       public boolean onQueryTextSubmit(String s) { 
        // do your search 
        return false; 
       } 

       @Override 
       public boolean onQueryTextChange(String s) { 
      // do your search on change or save the last string or... 
        return false; 
       } 
      }); 


     }catch(Exception e){e.printStackTrace();} 
    } 

menu_search 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:icon="@drawable/action_search_btn" 
     android:title="Search" 
     app:showAsAction="collapseActionView|ifRoom" 
     app:actionViewClass="android.support.v7.widget.SearchView"/> 
</menu> 
+0

спасибо за ответ .. @Yessine Mahdouani, пожалуйста, назовите меня, как я могу показать панель действий только в фрагменте поиска. Я не хочу панель действий во всех других фрагментах. Как я это сделаю? –

+0

menu_search.xml предназначен только для SearchFragment, в другом фрагменте размещено другое меню для панели действий, например, u, или просто поместите пустую панель действий, например, в HomeFragment put: 'setHasOptionsMenu (true);' ... ' @Override public void onCreateOptionsMenu (меню меню, надувной модуль MenuInflater) {super.onCreateOptionsMenu (меню, надув); inflater.inflate (R.menu.menu_home, меню); ... ' menu_home.xml: '

' –