如何从片段中调用两个不同的片段

时间:2014-06-29 15:45:07

标签: android android-fragments

我有一个片段类 我有一个可点击的线性布局 和一个可点击的按钮。

所以我想知道,当我点击线性布局时,它应该从片段1开始 当我点击按钮时,它应该开始片段2

public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.fragment_home, container, false);
    LinearLayout l = (LinearLayout) rootView.findViewById(R.id.line1);
    l.setOnClickListener(this);

    Button b = (Button) rootView.findViewById(R.id.map_button);
    b.setOnClickListener(this);
    return rootView;
}

@Override
public void onClick(View v) {

    Fragment frag = new Fragment1();
    FragmentTransaction ft  = getFragmentManager().beginTransaction();
    ft.replace(R.id.frame_container, frag);
    ft.addToBackStack(null);
    ft.commit();

    Fragment frag = new Fragment2();
    FragmentTransaction ft  = getFragmentManager().beginTransaction();
    ft.replace(R.id.frame_container, frag);
    ft.addToBackStack(null);
    ft.commit();

2 个答案:

答案 0 :(得分:0)

在按钮上添加onClickListener并尝试在单击时显示片段。

@Override
public void onClick(View v) {
    Fragment fragment = new Fragment1();
    FragmentTransaction fragmentTr = getFragmentManager().beginTransaction();
    fragmentTr .setCustomAnimations(android.R.animator.fade_in,
    android.R.animator.fade_out);
    if (fragment.isHidden()) 
       fragmentTr.show(fragment);
}

编辑:

您可以使用switch case语句获取单击的视图:

@Override
    public void onClick(View v) {
      switch(v.getId()) {
         case R.id.Button:
            // show fragment x
         case R.id.LinearLayout:
            // show fragment y
      }
    }

答案 1 :(得分:0)

当你说setOnClickListener(this)你引用类的onClick方法时,你的onClick方法必须知道被点击了什么。在你的代码中,无论用户点击什么,都将执行整个onClick方法。为了指定要执行的正确代码块,您可以使用Switch和case。