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