繁体   English   中英

android如何启动菜单上的新片段单击

[英]android to how start a new fragment on Menu click

在Android中,如何让菜单onClick启动新片段? 我在tabLayout中创建片段? 如何设置菜单点击开始新片段? 查看我的代码,当从菜单项中单击时如何显示新片段?

public class NetworkFragment extends Fragment {
private static final String ARG_PARAM1 = "param1";
private static final String ARG_PARAM2 = "param2";
private String mParam1;
private String mParam2;

private TabLayout tabLayout;
private ViewPager viewPager;

public NetworkFragment() {
    // Required empty public constructor
}
public static NetworkFragment newInstance(String param1, String param2) {
    NetworkFragment fragment = new NetworkFragment();
    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);
    }
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View view =inflater.inflate(R.layout.fragment_network, container, false);





    ViewPager viewPager = (ViewPager)view. findViewById(R.id.viewpager);
    final PagerAdapter pagerAdapter =
            new PagerAdapter(getChildFragmentManager(), getContext());
    viewPager.setAdapter(pagerAdapter);

    // Give the TabLayout the ViewPager
    final TabLayout tabLayout = (TabLayout)view. findViewById(R.id.tabs);
    tabLayout.setupWithViewPager(viewPager);

    // Iterate over all tabs and set the custom view
    for (int i = 0; i < tabLayout.getTabCount(); i++) {
        TabLayout.Tab tab = tabLayout.getTabAt(i);
        tab.setCustomView(pagerAdapter.getTabView(i));
    }


    final ImageView menuView = (ImageView) view.findViewById(R.id.menuView);
    menuView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(final View v) {
            PopupMenu popup = new PopupMenu(getContext(), v);
            popup.getMenuInflater().inflate(R.menu.network_menu, popup.getMenu());
            popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
                @Override
                public boolean onMenuItemClick(MenuItem item) {
                    //Toast.makeText(getContext(), "You Clicked : " + item.getTitle(), Toast.LENGTH_SHORT).show();

                    if(item.getItemId() ==R.id.allLinks){
                        //new Fragment

                    }
                    else if(item.getItemId() ==R.id.networkFavourites){
                        Toast.makeText(getContext(), "networkFavourites" , Toast.LENGTH_SHORT).show();
                    }
                    else if(item.getItemId() ==R.id.CompanyLinks){
                        Toast.makeText(getContext(), "CompanyLinks" , Toast.LENGTH_SHORT).show();
                    }
                    else if(item.getItemId() ==R.id.Company){
                        Toast.makeText(getContext(), "CompanyLinks" , Toast.LENGTH_SHORT).show();
                    }
                    else if(item.getItemId() ==R.id.Industry){
                        Toast.makeText(getContext(), "CompanyLinks" , Toast.LENGTH_SHORT).show();
                    }


                    return true;
                }
            });
            popup.show();
        }
    });


    return view;
}

class PagerAdapter extends FragmentPagerAdapter {

    String tabTitles[] = getResources().getStringArray(R.array.network_tab);
    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 MylinksFragment();
            case 1:
                return new MyGroupsFragment();
            case 2:
                return new MyInvitationsFragment();
            case 3:
                return new MyMessagesFragment();
        }

        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;
    }

}
}

在此处输入图片说明

在此处输入图片说明

其实你的问题还不清楚。 但是根据我的理解,您想在菜单单击上显示一个新片段。 为此,您必须编写如下代码

适用于API级别2.2或更高版本以及使用v4支持jar时

Fragment fragment = new YourFragmentName();// the fragment which you ant to display
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction().replace(R.id.frame_container,fragment).commit();

适用于API级别3.0或更高版本以及不使用v4支持罐时

FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction().replace(R.id.frame_container, fragment).commit();

这样,您可以替换片段或显示新片段。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM