Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何从一个片段中调用两个不同的片段_Android_Android Fragments - Fatal编程技术网

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

Android 如何从一个片段中调用两个不同的片段,android,android-fragments,Android,Android Fragments,我有一个片段类 我有一个线性布局可点击 和一个可点击的按钮 所以我想知道,当我点击线性布局时,它应该从片段1开始 当我点击按钮时,它应该开始片段2 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragm

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

所以我想知道,当我点击线性布局时,它应该从片段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();

在按钮上添加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
      }
    }

当你说SetOnClickListener时,你的onClick方法必须知道点击了什么。这是指类的onClick方法。在你的代码中,用户点击什么并不重要,整个onClick方法都将被执行。为了指定要执行的正确代码块,您可以对FragmentTransaction使用Switch和case.

。看看我的答案,如果fragment.ishiden fragmentr.showfragment;