Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.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
Java 如何通过按钮从另一个片段选项卡打开片段选项卡_Java_Android_Android Fragments - Fatal编程技术网

Java 如何通过按钮从另一个片段选项卡打开片段选项卡

Java 如何通过按钮从另一个片段选项卡打开片段选项卡,java,android,android-fragments,Java,Android,Android Fragments,我有3个标签,可以扩展片段。第二个片段(extends fragment implements locationListener)有一个带有公交车站标记的地图(很好用)。我想从第一个选项卡通过一个按钮打开第二个片段,以获得标记(latlng)的位置。我的问题是,我不能有目的地这样做(startActivityforresult),因为这不是一项活动。你能帮我解决这个问题吗 头等舱 public class FirstTab extends Fragment { @Override public

我有3个标签,可以扩展片段。第二个片段(extends fragment implements locationListener)有一个带有公交车站标记的地图(很好用)。我想从第一个选项卡通过一个按钮打开第二个片段,以获得标记(latlng)的位置。我的问题是,我不能有目的地这样做(startActivityforresult),因为这不是一项活动。你能帮我解决这个问题吗

头等舱

public class FirstTab extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.first, container, false);

    Button btnFrom;
    Button btnTo;


 // Getting reference to Buttons From&To
    btnFrom = ( Button ) view.findViewById(R.id.btn_from);
    btnTo = ( Button ) view.findViewById(R.id.btn_to);

 // click listener on Buttons From
    btnFrom.setOnClickListener(new OnClickListener() {

  @Override
   public void onClick(View v) {
    // move to secondfragment   

     }
   });

 // click listener on Buttons To
   btnTo.setOnClickListener(new OnClickListener() {

    @Override
     public void onClick(View v) {

     // move to secondfragment                 

     }     
   });

   return view;  
   } 
 }
first.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_marginLeft="14dp"
    android:layout_marginTop="25dp"
    android:text="Destination from:"
    android:textAppearance="?android:attr/textAppearanceMedium" />

<Button
    android:id="@+id/btn_showroute"
    android:layout_width="wrap_content"
    android:layout_height="70dp"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentRight="true"
    android:text="Show My Route" />

<Button
    android:id="@+id/btn_to"
    android:layout_width="wrap_content"
    android:layout_height="60dp"
    android:layout_below="@+id/btnSpeak1"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="20dp"
    android:text="@string/str_btn_to" />

<TextView
    android:id="@+id/textView2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/textView1"
    android:layout_centerVertical="true"
    android:text="Destination To:"
    android:textAppearance="?android:attr/textAppearanceMedium" />

<Button
    android:id="@+id/btn_from"
    android:layout_width="wrap_content"
    android:layout_height="60dp"
    android:layout_alignLeft="@+id/btn_to"
    android:layout_below="@+id/btnSpeak"
    android:layout_marginTop="29dp"
    android:text="@string/str_btn_from" />

可以对片段使用
replace()
方法将当前片段替换为另一个片段

i、 e.:
replace(YourNewFragment.newInstance())

如果不想实际替换片段,可以通过编程将选项卡更改为要显示的选项卡。如果您使用的是
ViewPager
,可以通过调用
yourViewPager.setCurrentItem(indexToSet)
来完成


让我知道这是否有帮助,或者如果您对我的答案有任何其他问题

我也遇到了同样的问题,通过从firstFragment类调用viewpager,然后轻松地将viewpager的当前项设置为所需选项卡的索引,我很容易地解决了这个问题

这是我放在第一个tab片段的onClick方法中的代码,让我转到第三个tab片段

ViewPager viewPager = getActivity().findViewById(R.id.simpleViewPager);
viewPager.setCurrentItem(2);

我的答案可能晚了,但我希望它能帮助其他可能遇到这一挑战的人。

如果我设置第二个xml id并使用fragment newFragment=new findulotefragmenttab();FragmentTransaction=getFragmentManager().beginTransaction();事务。替换(R.id.content,newFragment);transaction.addToBackStack(空);commit();它取代了布局,但我在xml中的按钮显示在新选项卡中..我不希望出现这种情况..你能给出一个如何使用VewPager的示例吗?
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<Spinner
    android:id="@+id/spr_place_type"
    android:layout_width="wrap_content"
    android:layout_height="60dp"
    android:layout_alignParentTop="true" />

<Spinner
    android:id="@+id/spr_radius"
    android:layout_width="wrap_content"
    android:layout_height="60dp"
    android:layout_toRightOf="@id/spr_place_type"
    android:layout_alignParentTop="true" />

<Button
    android:id="@+id/btn_find"
    android:layout_width="wrap_content"
    android:layout_height="60dp"
    android:layout_alignParentTop="true"
    android:layout_toRightOf="@id/spr_radius"
    android:text="@string/str_btn_find" />

<fragment 
    android:id="@+id/map"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@id/spr_place_type"
    class="com.google.android.gms.maps.SupportMapFragment" />

</RelativeLayout>
public class Tabsadapter extends FragmentStatePagerAdapter{

private int TOTAL_TABS = 3;

public Tabsadapter(FragmentManager fm) {
   super(fm);
   // TODO Auto-generated constructor stub
 }

@Override
public Fragment getItem(int index) {
   // TODO Auto-generated method stub
    switch (index) {
       case 0:
           return new RouteFragmentTab();

       case 1:
           return new FindRouteFragmentTab();

       case 2:
           return new MapRouteFragmentTab();
       }

       return null;
   }

  @Override
  public int getCount() {
   // TODO Auto-generated method stub
   return TOTAL_TABS;
    }
 }
ViewPager viewPager = getActivity().findViewById(R.id.simpleViewPager);
viewPager.setCurrentItem(2);