2017-08-24 70 views
1

基本上我正在尋找在片段的工具欄中放置一個刷新按鈕。我的主要活動有四個片段可供處理,但我只想要其中一個片段的刷新圖標。從工具欄隱藏ImageView除了一個片段之外

這裏是我的工具欄的代碼

<android.support.v7.widget.Toolbar 
    android:id="@+id/toolbar" 
    android:layout_width="match_parent" 
    android:layout_height="?attr/actionBarSize" 
    android:background="?attr/colorPrimary" 
    app:layout_scrollFlags="scroll|enterAlways" 
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light"> 


    <ImageView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@drawable/ic_cached_black_24dp" 
     android:layout_alignParentRight="true" 
     android:layout_marginRight="20dp" 
     android:tint="@color/colorWhite" 
     android:layout_gravity="right" 
     android:id="@+id/refreshResults" 
     android:textSize="12sp" 
     android:background="@null" 
     android:layout_alignParentEnd="true"/> 


</android.support.v7.widget.Toolbar> 

在我的Activity類我做

refreshResults = (ImageView) findViewById(R.id.refreshResults); 
    refreshResults.setVisibility(View.GONE); 

在我的片段我沒有

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    ImageView refreshResults = (ImageView) getActivity().findViewById(R.id.refreshResults); 
    refreshResults.setVisibility(View.GONE); 
} 

的我把可見的碎片我想要展示它。

它是一種工作,它不像我想要的那樣流暢......有沒有一種處理我所需要的東西類型的好方法?

我的主要活動的內幕我:

private void setupViewPager(ViewPager viewPager) { 
    ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager()); 
    adapter.addFragment(new HomeFragment(), "0"); 
    adapter.addFragment(new PickYourProsFragment(), "1"); 
    adapter.addFragment(new ResultsFragment(), "2"); 
    adapter.addFragment(new ChatFragment(), "3"); 
    viewPager.setAdapter(adapter); 
} 

class ViewPagerAdapter extends FragmentPagerAdapter { 
    private final List<Fragment> fragmentList = new ArrayList<>(); 
    private final List<String> fragmentTitleList = new ArrayList<>(); 

    public ViewPagerAdapter(FragmentManager manager) { 
     super(manager); 
    } 

    @Override 
    public Fragment getItem(int position) { 
     return fragmentList.get(position); 
    } 

    @Override 
    public int getCount() { 
     return fragmentList.size(); 
    } 

    public void addFragment(Fragment fragment, String title) { 
     fragmentList.add(fragment); 
     fragmentTitleList.add(title); 
    } 

    @Override 
    public CharSequence getPageTitle(int position) { 
     return fragmentTitleList.get(position); 
    } 
} 

這裏是任何人解WHO穿越這是後話。

viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { 
    @Override 
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { 

    } 

    @Override 
    public void onPageSelected(int position) { 
     if (position == 0) { 
      System.out.println("0"); 
      refreshResults.setVisibility(View.GONE); 
     } else if (position == 1) { 
      System.out.println("1"); 
      refreshResults.setVisibility(View.GONE); 
     } else if (position == 2) { 
      System.out.println("2"); 
      refreshResults.setVisibility(View.VISIBLE); 
     } else if (position == 3) { 
      System.out.println("3"); 
      refreshResults.setVisibility(View.GONE); 
     } 
    } 
+0

查看傳呼機適配器。生病更新我的帖子。 – DroiDev

+0

有什麼理由不能使用帶有圖標的菜單項(ActionButton)? – 0X0nosugar

+0

嘗試過......它沒有拿起我的菜單出於某種原因。但我得到了一個解決方案生病後很快 – DroiDev

回答

1

如果您使用的視圖尋呼機的適配器,您可以在父活動覆蓋OnPageChangeListenerViewPager在那裏你可以隱藏/顯示onPageSelected(int position)

+1

感謝您的提示。因爲這個我能夠找出我上面發佈的答案。 – DroiDev