Ich erstelle eine Android App mit viewpager
und fragment
s. Ich benutze zwei Knöpfe an einem Fragment, um vorwärts und rückwärts zu gehen. Wenn ich die Vorwärtsaktion verwende, kommt das nächste Fragment von rechts nach links. Es bedeutet, dass sich bei dieser Aktion Fragmente von rechts nach links verändern.Wie bekomme ich das vorherige Fragment von rechts nach links auf einem Viewpager in Android
Hier sind meine Arbeitscode,
MainActivity.java
public class MainActivity extends FragmentActivity {
private ViewPager viewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
viewPager=(ViewPager)findViewById(R.id.viewPager);
viewPager.setAdapter(new MyPagerAdapter2(getSupportFragmentManager()));
viewPager.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (viewPager.getCurrentItem() == 0) {
return true;
}
if (viewPager.getCurrentItem() == 1) {
return true;
}
if (viewPager.getCurrentItem() == 2) {
return true;
}
if (viewPager.getCurrentItem() == 3) {
return true;
}
if (viewPager.getCurrentItem() == 4) {
return true;
}
return false;
}
});
}
private class MyPagerAdapter2 extends FragmentPagerAdapter {
public MyPagerAdapter2(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int pos) {
switch(pos) {
case 0: return FirstFragment1.newInstance("FirstFragment_1");
case 1: return SecondFragment1.newInstance("SecondFragment_1");
case 2: return ThirdFragment1.newInstance("ThirdFragment_1");
case 3: return FourthFragment1.newInstance("FourthFragment_1");
case 4: return FifthFragment1.newInstance("FifthFragment_1");
default: return FirstFragment1.newInstance("DefaultFragment_1");
}
}
@Override
public int getCount() {
return 5;
}
}
public void setCurrentItem(int which) {
if(viewPager != null && which >= 0 && which <= 4) {
viewPager.setCurrentItem(which);
}
}
}
FirstFragment1.java
public class FirstFragment1 extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.first_frag_1, container, false);
TextView tv = (TextView) v.findViewById(R.id.tvFragFirst);
tv.setText(getArguments().getString("msg"));
Button button1=(Button)v.findViewById(R.id.nextButton);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (getActivity() != null) {
((MainActivity)getActivity()).setCurrentItem(1); // fourth fragment index is 3
}
}
});
return v;
}
public static FirstFragment1 newInstance(String text) {
FirstFragment1 f = new FirstFragment1();
Bundle b = new Bundle();
b.putString("msg", text);
f.setArguments(b);
return f;
}
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if(isVisibleToUser) {
Activity a = getActivity();
if(a != null) a.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LOCKED);
}
}
}
SecondFragment1.java
Wenn ich die Rückwärtsaktion verwende, kommt das vorherige Fragment von links nach rechts. Aber es sollte von rechts nach links sein und ich habe keine Ahnung, wie es geht.
zB: -
Wenn ich auf die Schaltfläche in SecondFragment1, FirstFragment1 von rechts kommen sollte auf der viewpager
nach links. Aber momentan kommt es von links nach rechts.
Wie konnte ich das erreichen? Soll ich eine Animation verwenden?
Haben Sie irgendwelche Ideen? Vielen Dank.
Lieber, das hilft mir, einige Teile meines Problems zu lösen. Aber als ich diesen Code benutzte, hatte ich einige Probleme. Erstens kann ich FirstFragment nicht laden, wenn ich auf den Button in SecondFragment klicke. – Barrier
sagen Sie mir, wenn ich kann ich versuchen, Ihnen –
im Schiebeprozess zu helfen, das funktioniert für mich. – Barrier