2016-05-17 6 views
0

Fragment mit Menü Benutzerdefiniert:? kann ich ändern fragmentieren, wie Veränderung zum Menü Fragment B ist gleich wie oben mit verschiedenen aufblasen XML Menü Menü Arbeit ImageViewmenuViewonClick und Fragment ändern ändern MenünamenBenutzerdefiniertes Menü Optionsmenü in verschiedenen Fragmenten ändern?

public class BizForumFragment extends Fragment implements View.OnClickListener{ 
private static final String ARG_PARAM1 = "param1"; 
private static final String ARG_PARAM2 = "param2"; 
private String mParam1; 
private String mParam2; 
ImageView menuView; 
Context context; 
RequestParse requestParse; 
PagerAdapter adapter; 
ViewPager viewPager; 

public BizForumFragment() { 

} 
public static BizForumFragment newInstance(String param1, String param2) { 
    BizForumFragment fragment = new BizForumFragment(); 
    Bundle args = new Bundle(); 
    args.putString(ARG_PARAM1, param1); 
    args.putString(ARG_PARAM2, param2); 
    fragment.setArguments(args); 
    return fragment; 
} 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    if (getArguments() != null) { 
     mParam1 = getArguments().getString(ARG_PARAM1); 
     mParam2 = getArguments().getString(ARG_PARAM2); 
    } 
    context = this.getContext(); 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    View view=inflater.inflate(R.layout.fragment_biz_forum, container, false); 
    viewPager = (ViewPager) view.findViewById(R.id.viewpager); 
    adapter = new PagerAdapter(getChildFragmentManager(), getContext()); 
    viewPager.setAdapter(adapter); 
    menuView = (ImageView) view.findViewById(R.id.menuView); 
    menuView.setOnClickListener(this); 
    final TabLayout tabLayout = (TabLayout) view.findViewById(R.id.tabs); 
    tabLayout.setupWithViewPager(viewPager); 
    for (int i = 0; i < tabLayout.getTabCount(); i++) { 
     TabLayout.Tab tab = tabLayout.getTabAt(i); 
     tab.setCustomView(adapter.getTabView(i)); 
    } 
    return view; 
} 

@Override 
public void onClick(View v) { 
    PopupMenu popup = new PopupMenu(getContext(), menuView); 
    popup.getMenuInflater().inflate(R.menu.article_menu, popup.getMenu()); 

    popup.show(); 
} 

class PagerAdapter extends FragmentStatePagerAdapter { 
    String tabTitles[] = getResources().getStringArray(R.array.myLinks); 
    Context context; 

    public PagerAdapter(FragmentManager fm, Context context) { 
     super(fm); 
     this.context = context; 
    } 
    @Override 
    public int getCount() { 
     return tabTitles.length; 
    } 
    @Override 
    public Fragment getItem(int position) { 

     switch (position) { 
      case 0: 
       return new ArticlesFragment(); 
      case 1: 
       return new DiscussionFragment(); 
      case 2: 
       return new NewsFragment(); 
     } 
     return null; 
    } 

    @Override 
    public CharSequence getPageTitle(int position) { 
     // Generate title based on item position 
     return tabTitles[position]; 
    } 
    public View getTabView(int position) { 
     View tab = LayoutInflater.from(getContext()).inflate(R.layout.tab_text_layout, null); 
     TextView tv = (TextView) tab.findViewById(R.id.custom_text); 
     tv.setText(tabTitles[position]); 
     return tab; 
    } 

} 
} 

Antwort

0

Zuvor Ich hatte ein ähnliches Problem. Ich kündigte in der Klasse von Fragmenten updateToolbar() Methode an und nannte sie in ViewPager.OnPageChangeListener für das ausgewählte Fragment. Bei dem Verfahren updateToolbar() rief ich den folgenden Code:

getActivity().supportInvalidateOptionsMenu(); 

Danach Wieder Aufblasen Menü Ressourcen aufgetreten. Sie können mein Beispiel here

finden
Verwandte Themen