2014-11-07 3 views
1

У меня есть навигация на ящике, и я переключаюсь между фрагментами, в Фрагмент ОДИН У меня есть прядильщик на панели инструментов. Во Фрагменте TWO я не хочу spinner, поэтому я удаляю spinner с свойством visibility = GONE, и это работает.Spinner на панели инструментов появляется, когда я ищу - Android Lollipop

НО, в Фрагменте TWO, делая следующие шаги, что-то странное происходит на самом деле

  1. Нажмите на значок поиска
  2. Вид поиска отображается на панели инструментов
  3. постукиваю отменить
  4. Свернуть эту таблицуРазвернуть эту таблицу Свернуть это изображение Отправить по электронной почтеНаписать об этом в блогеОпубликовать в TwitterОпубликовать в FacebookОбъявленияПодробности просмотра, и счетчик из фрагмента ОДИН появляется

Я попытался использовать этот список r «OnActionExpandListener» в значке поиска, чтобы снова скрыть счетчик, когда пользователь отменил отмену, но он не работает.

любые идеи?

ящика навигации, где настроить панель инструментов

<android.support.v4.widget.DrawerLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/drawer_layout" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:fitsSystemWindows="true"> 


<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    > 

    <include layout="@layout/toolbar_dropdown"/> 

    <!-- The main content view --> 
    <FrameLayout 
     android:id="@+id/content_frame" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     /> 
</LinearLayout> 

    <!-- The navigation drawer --> 
    <ListView android:id="@+id/left_drawer" 
     android:fitsSystemWindows="true" 
     android:layout_width="240dp" 
     android:layout_height="match_parent" 
     android:layout_gravity="start" 
     android:layout_marginTop="56dp" 
     android:choiceMode="singleChoice" 
     android:divider="@color/gray_light_divider_list_drawerNav" 
     android:dividerHeight="1dp" 
     android:background="@color/gray_light_background_list_drawerNav" 
     /> 

Выдвижные метод навигации активность OnCreate, где я настроить панель инструментов

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    if (toolbar != null) { 
     setSupportActionBar(toolbar); 
    } 

    if(getSupportActionBar()!=null) { 
     getSupportActionBar().setDisplayShowTitleEnabled(false); 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
     getSupportActionBar().setHomeButtonEnabled(true); 
    } 

Это, как я переключаться между фрагментами

android.support.v4.app.FragmentTransaction transaction = fragmentManager.beginTransaction(); 
      transaction.replace(R.id.content_frame, fragment); 
      transaction.addToBackStack(null); 
      transaction.commit(); 

Использование ActionBarDrawerToggle в методе onDrawerOpened, я удалить вертушку, так что это означает, что каждый раз, когда ящик навигации открыт я удалил вертушку как этот

Spinner spinner = (Spinner)findViewById(R.id.spinner_nav); 
spinner.setVisibility(View.GONE); 

Это OnActionExpandListener в Fragment ДВА

MenuItemCompat.OnActionExpandListener searchOnActionExpandListener = new MenuItemCompat.OnActionExpandListener() 
{ 
    @Override 
    public boolean onMenuItemActionExpand(MenuItem menuItem) { 

     return true; 
    } 

    @Override 
    public boolean onMenuItemActionCollapse(MenuItem menuItem) { 
     Spinner spinner = (Spinner)findViewById(R.id.spinner_nav); 
spinner.setVisibility(View.GONE); 
     return true; 
    } 
}; 
+0

Не могли бы вы показать код, в котором вы установили и прячьте прядильщик? И является ли счетчик в макете эксклюзивным для фрагмента 1 или является частью, которая является общими для обоих фрагментов 1 и 2, и вы просто скрываете ее, когда появляется фрагмент 2? – ucsunil

+0

Привет Сунил, спиннер находится в части, которая является общей для обоих. И я прячу счетчик каждый раз, когда открыта ящик, и он появляется, когда я заменяю фрагмент ОДИН – arh

+0

. Я редактировал свой вопрос с кодом – arh

ответ

2

Чтобы решить эту проблему, я сделал следующее.

Я удалил вертушку на панели инструментов, так это выглядит, как этот

<android.support.v7.widget.Toolbar 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:id="@+id/toolbar" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:minHeight="?attr/actionBarSize" 
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" 
app:popupTheme="@style/ThemeOverlay.AppCompat.Light" 
android:background="?attr/colorPrimary"> 
</android.support.v7.widget.Toolbar> 

И я начал добавлять вертушку в одном фрагменте программно

Toolbar toolbar = (Toolbar)getActivity().findViewById(R.id.toolbar); 
    if(toolbar.findViewWithTag("spinner_nav")==null) { 
     Spinner spinner = new Spinner(getActivity()); 
     spinner.setTag("spinner_nav"); 

     //Setting up the adapter 
     AdapterFragmentOne spinnerAdapter = new AdapterFragmentOne(getActivity(), array); 
     spinnerAdapter.setDropDownViewResource(R.layout.spinner_dropdown_item); 

     if (spinner != null) { 
      spinner.setVisibility(View.VISIBLE); 
      spinner.setAdapter(spinnerAdapter); 
     } 
     spinnerAdapter.notifyDataSetChanged(); 
     spinner.setOnItemSelectedListener(mOnNavigationListener); 

     toolbar.addView(spinner); 
    } 

В моей Выдвижные навигации активность я извлекаю счетчик, когда ящик открыт, я выполняю

//Removing the spinner view 
    Spinner spinner = (Spinner) toolbar.findViewWithTag("spinner_nav"); 
    toolbar.removeView(spinner); 
+3

Для этого вы заслуживаете благородной премии. –

Смежные вопросы