Changement de page sur le bouton cliquez sur ViewPager Android
MISES à jour: Logcat has been added to the question
Je veux changer de vue ( d'un fragment à l'autre. ) sur button Click
j'ai essayé beaucoup de choses mais je suis incapable de le faire. J'ai également écrit un CustomViewPager
d'arrêter de changer de pages sur le balayage de l'écran. il fonctionne très bien.
Voici mon code:
MyFragment
public CustomViewPager mViewPager;
public Button next;
public static int count=0;
public static final MyFragment newInstance(String message,ArrayList<String> a)
{
MyFragment f = new MyFragment();
Bundle bdl = new Bundle(1);
bdl.putString(EXTRA_MESSAGE, message);
bdl.putStringArrayList(EXTRA_ARRAY, a);
f.setArguments(bdl);
return f;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
String message = getArguments().getString(EXTRA_MESSAGE);
View v = inflater.inflate(R.layout.myfragment_layout, container, false);
spinner = (Spinner)v.findViewById(R.id.spinoptions);
answer = (EditText)v.findViewById(R.id.answer);
next = (Button)v.findViewById(R.id.next);
next.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//TODO Auto-generated method stub
mViewPager.setCurrentItem(1, true);//getItem(-1) for previous
//it is not working
}
});
ArrayList<String> list = new ArrayList<String>();
list.add("list 1");
list.add("list 2");
list.add("list 3");
Builtprofile.q.get(0).getOptions();
answer.setVisibility(View.INVISIBLE);
spinner.setVisibility(View.VISIBLE);
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(Builtprofile.context,
android.R.layout.simple_spinner_item,getArguments().getStringArrayList(EXTRA_ARRAY));
dataAdapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
spinner.setAdapter(dataAdapter);
TextView messageTextView = (TextView)v.findViewById(R.id.textView);
messageTextView.setText(message);
return v;
}
private int getItem() {
return mViewPager.getCurrentItem();
}
Code pour mon PageAdapter
class MyPageAdapter extends FragmentPagerAdapter {
private List<Fragment> fragments;
public MyPageAdapter(FragmentManager fm, List<Fragment> fragments) {
super(fm);
this.fragments = fragments;
}
@Override
public Fragment getItem(int position) {
return this.fragments.get(position);
}
@Override
public int getCount() {
return this.fragments.size();
}
}
Code pour ActivityClass
public List<Fragment> getFragments(){
List<Fragment> fList = new ArrayList<Fragment>();
for(i=0;i<q.size();i++)
{
fList.add(MyFragment.newInstance(q.get(i).getText(),q.get(i).getOptions()));
}
return fList;
}
public void fragmentopener()
{
List<Fragment> fragments = getFragments();
pageAdapter = new MyPageAdapter(getSupportFragmentManager(), fragments);
ViewPager pager = (ViewPager)findViewById(R.id.viewpager);
pager.setAdapter(pageAdapter);
}
Code pour myCustomViewPager
public class CustomViewPager extends ViewPager {
private boolean isPagingEnabled;
public CustomViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
this.isPagingEnabled = false;
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if (this.isPagingEnabled) {
return super.onTouchEvent(event);
}
return false;
}
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
if (this.isPagingEnabled) {
return super.onInterceptTouchEvent(event);
}
return false;
}
public void setPagingEnabled(boolean b) {
this.isPagingEnabled = b;
}
}
LogCat:
04-07 15:55:53.254: E/AndroidRuntime(17379): FATAL EXCEPTION: main
04-07 15:55:53.254: E/AndroidRuntime(17379): java.lang.NullPointerException
04-07 15:55:53.254: E/AndroidRuntime(17379): at adapters.MyFragment$1.onClick(MyFragment.java:71)
04-07 15:55:53.254: E/AndroidRuntime(17379): at android.view.View.performClick(View.java:3574)
04-07 15:55:53.254: E/AndroidRuntime(17379): at android.view.View$PerformClick.run(View.java:14293)
04-07 15:55:53.254: E/AndroidRuntime(17379): at android.os.Handler.handleCallback(Handler.java:605)
04-07 15:55:53.254: E/AndroidRuntime(17379): at android.os.Handler.dispatchMessage(Handler.java:92)
04-07 15:55:53.254: E/AndroidRuntime(17379): at android.os.Looper.loop(Looper.java:137)
04-07 15:55:53.254: E/AndroidRuntime(17379): at android.app.ActivityThread.main(ActivityThread.java:4448)
04-07 15:55:53.254: E/AndroidRuntime(17379): at java.lang.reflect.Method.invokeNative(Native Method)
04-07 15:55:53.254: E/AndroidRuntime(17379): at java.lang.reflect.Method.invoke(Method.java:511)
04-07 15:55:53.254: E/AndroidRuntime(17379): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:823)
04-07 15:55:53.254: E/AndroidRuntime(17379): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:590)
04-07 15:55:53.254: E/AndroidRuntime(17379): at dalvik.system.NativeStart.main(Native Method)
veuillez indiquer la ligne 71 @
Ligne 71: mViewPager.setCurrentItem(1, true);
point d'utilisation, lorsque vous initialisez
lorsque cette logcat erreur se produit, je veux dire quand vous essayez cette ViewPager.setCurrentItem(1); puis il se produit? Je pense que ViewPager.setCurrentItem(1); travail
MyFragment
Ligne 71: mViewPager.setCurrentItem(1, true);
point d'utilisation, lorsque vous initialisez
mViewPager
sur votre codelorsque cette logcat erreur se produit, je veux dire quand vous essayez cette ViewPager.setCurrentItem(1); puis il se produit? Je pense que ViewPager.setCurrentItem(1); travail
mViewPager
est null, OP initialise pas que
OriginalL'auteur Hassaan Rabbani | 2014-04-07
Vous devez vous connecter pour publier un commentaire.
vous obtenez
NPE
sur la ligne 71 @MyFragment
, comme vous l'avez dit en commentaire cette ligne est:donc
mViewPager
est null, vous devez initialiser qu'avant d'utiliserutilisez le code suivant à la place de votre code:
et
getItem()
est:qu'est-ce que votre veux dire, rien ne s'est passé? votre code sur cette ligne? essayez avec le journal ou de débogage. essayez
mViewPager.setCurrentItem(1)
tropondebugging, chaque fois que je le balayage de la vue, l'getcurrentitem m'indique 0
voir stackoverflow.com/questions/12854783/...
je suis fait à l'aide de stackoverflow.com/questions/18658944/...
OriginalL'auteur Shayan Pourvatan
Pas une Réponse, mais lire sur
Je pourrais être en retard ici, j'ai trouvé une solution très simple à partir d'un ressources en ligne:
Dans le fragment xml, où vous mettez en œuvre les boutons next /previous ajouter cette ligne au bouton xml:
android:onClick="jumpToPage"
Placer le curseur entre "jumpToPage" - appuyez sur Alt + Entrée:
Ajouter la fonction dans votre PagerActivity -- Pas dans le fragment
Maintenant modifier la fonction pour cela:
Maintenant m'acheter un nunchai 🙂
OriginalL'auteur Skynet
J'espère que cela va vous aider à:
Viens de mettre ce code sur le clic du bouton:
REMARQUE: à la place de 1 vous pouvez transmettre votre numéro de
Je suis déjà le faire de cette façon
sa ne fonctionne toujours pas. j'ai 9 fragments à chaque fois qu'il retourne un nullpointer erreur
je pense que cela pourrait travaillé, post logcat erreur peut-être que vous avez un problème avec certains où d'autre
parce que j'avais déjà mis en œuvre dans cette voie. mais j'ai été incapable de le faire fonctionner, c'est pourquoi j'avais posté une question ici. de toute façon. des acclamations.
OriginalL'auteur Darshak
C'est comment je le fais
OriginalL'auteur Kaustubh Bhagwat
Simplement faire ce
Prochaine & Précédente deux boutons.
OriginalL'auteur Samin Ali Mondal