Ich habe die folgende XML-Datei ersetzen. In eines des Fragmente versuche ich ein neues Fragment mit diesem Code zu starten:Wie Ansicht Pager Ansicht komplett mit einem neuen Fragmente in Android
FragmentTransaction trans = getFragmentManager()
.beginTransaction();
trans.replace(R.id.pager, new SubscriptionFragment());
trans.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
trans.addToBackStack(null);
trans.commit();
ich in der Lage bin, um erfolgreich das bestehende Fragment des ViewPager zu ersetzen, aber es ist nicht meine Absicht dienen, was ich Es ist wünschenswert, das vorhandene Fragment, das bereits im viewPager vorhanden ist, nicht zu ersetzen, sondern den Ansichtspager selbst aus der Ansicht zu entfernen und ein neues Fragment zu starten, so dass die obersten Registerkarten nicht mehr sichtbar sind und ViewPager von der Ansicht verschwindet. Dies funktioniert, wenn ich eine neue Aktivität mit Absicht starte. aber funktioniert nicht für ein Fragment.
Edited:
public class MainActivity extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getSupportFragmentManager().beginTransaction().replace(R.id.frame_layout, new MainFragment()).commit();
}
}
MainFragment:
public class MainFragment extends Fragment {
FragmentPagerAdapter adapterViewPager;
ViewPager viewPager;
String title[] = {"Services", "You", "History"};
// TODO: Rename and change types and number of parameters
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
/* Inflate the layout for this fragment */
View view = inflater.inflate(R.layout.fragment_view_pager, container, false);
/*************************************/
//CALLING HISTORY API
// loadSubscriptions();
return view;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
ViewPagerAdapter mAdapter = new ViewPagerAdapter(getFragmentManager());
ViewPager mPager = (ViewPager) getView().findViewById(R.id.pager);
mPager.setAdapter(mAdapter);
}
public static class ViewPagerAdapter extends FragmentPagerAdapter {
public ViewPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int num) {
if (num == 0) {
return new ServicesFragment();
} else {
return new HistoryFragment();
}
}
@Override
public int getCount() {
return 2;
}
}
}
activity_main.xml
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/frame_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
</FrameLayout>
fragment_view_pager.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.view.ViewPager
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent" />
In servicefragment: Ich Eröffnungstag neues Fragment mit:
physiotherapyView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
FragmentTransaction trans = getFragmentManager()
.beginTransaction();
/*
* IMPORTANT: We use the "root frame" defined in
* "root_fragment.xml" as the reference to replace fragment
*/
trans.replace(R.id.pager, new SubscriptionFragment());
/*
* IMPORTANT: The following lines allow us to add the fragment
* to the stack and return to it later, by pressing back
*/
trans.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
trans.addToBackStack(null);
trans.commit();
}
});
ist der ViewPager innen Fragment auch? –
@ItzikSamara nein, es ist eine Aktivität! – user3458008