Java – how to find the “last page” in the view pager Or total “views” Android Development

Thank you for your advanced help Sorry, if this is a very stupid question, but I can't find anywhere else

Fragment f = new UserFragment();
Bundle bundl = new Bundle();
bundl.putInt("pagenumbers",size);
f.setArguments(bundl);
lf.add(f);

Internal first batch However, when userfragment extracts its parameters under "pagenumbers", it returns 0 Then, I try to access the getcount () method that exists in the fragmentadapter, but I don't know what to do because I'm in userfragment when I need it

What else can I do to help clarify? I'm extracting "current page information". I'm working now. Thank some of my previous positions and helpers Now I want to see "CurrentPage = = size (/ / which is number of pages. Total views in the viewpager)" So in the onclick method, you can see in the userfragment if it is the last page and the user clicks the button to go to the next page I want it to jump to another activity where it processes all SparseArray data collected from all forms (I need help on how to make this SparseArray data an intention. I may ask a new question because it is not very relevant.) So if you can help me get my current hard work (how to do it correctly), or just suggest a new method, I'm very happy As long as I can make it work!

Thank you very much for your great help Please help!

My userfragment java:

package com.example.thinice;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class UserFragment extends Fragment {


    public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.layout_avgcalcform,container,false);
        final EditText markc = (EditText)rootView.findViewById(R.id.editTextASSMARK);
        final EditText marktotc = (EditText)rootView.findViewById(R.id.editTextASSTOT);
        final EditText assvalc = (EditText)rootView.findViewById(R.id.editTextASSWORTH);
        int currentviewnum =  ((FirstFragment) getActivity()).getPager().getCurrentItem();
        String pagenum = Integer.toString(currentviewnum);

           TextView tv = (TextView) rootView.findViewById(R.id.avg_testtv);
             tv.setText(pagenum);
        Button b = (Button) rootView.findViewById(R.id.button1);
        b.setOnClickListener( new View.OnClickListener(){

               public void onClick(View v){

        int currentviewnum =  ((FirstFragment)    getActivity()).getPager().getCurrentItem();
                   ((FirstFragment) getActivity()).saveData(new  Question(markc.getText().toString(),marktotc.getText().toString(),assvalc.getText().toString()));
                   ((FirstFragment) getActivity()).getPager().setCurrentItem(currentviewnum+1);



               }
    });
        return rootView;

    }   

}

If you need to see my code again, please let me know But it really bothers me, so it would be great if someone could help me there! Thank you very much for your senior

FragmentAdapter. java:

package com.example.thinice;

import java.util.ArrayList;
import java.util.List;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.view.ViewGroup;

public class FragmentAdapter extends FragmentPagerAdapter{


    private List<Fragment> fragments;



    public FragmentAdapter(FragmentManager fragmentManager,ArrayList<Fragment> fragments) {
        super(fragmentManager);
            this.fragments = fragments;
    }

    @Override
    public Fragment getItem(int position) {
        //Bundle args = new Bundle();
        //args.putInt("page_position",position+1);
        //((Fragment) fragments).setArguments(args);
        return this.fragments.get(position);
    }

    @Override
    public void destroyItem (ViewGroup container,int position,Object object)
    {
        super.destroyItem(container,position,object);
    }

    @Override
    public int getCount() {
       return this.fragments.size();
    }
}

FirstFragment. Java (this is my activity):

package com.example.thinice;



import java.util.ArrayList;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.ViewPager;
import android.util.SparseArray;
import android.widget.Button;

public class FirstFragment extends FragmentActivity 
  {

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout_viewpager);

        // Check whether the activity is using the layout version with
        // the fragment_container FrameLayout. If so,we must add the first fragment
        int size = getIntent().getExtras().getInt("numass1");
        ViewPager vp = (ViewPager) findViewById(R.id.viewPager);



            if (savedInstanceState != null) {
                return;
            }

            ArrayList<Fragment> lf = new ArrayList<Fragment>();
            for(int count=0; count<size; count ++){

                Fragment f = new UserFragment();
                lf.add(f);







            }

 FragmentAdapter hello = new FragmentAdapter(getSupportFragmentManager(),lf);
            vp.setAdapter(hello);
          //  vp.setOffscreenPageLimit(size);


        }

    SparseArray<Question> questions = new SparseArray<Question>();
    public void saveData(Question quest){
        ViewPager vp = (ViewPager) findViewById(R.id.viewPager);
           questions.put(vp.getCurrentItem(),quest);

    }
    public ViewPager getPager() {
        ViewPager vp = (ViewPager) findViewById(R.id.viewPager);
        return vp;
    }




    }

Edit: logcat file suggested solution:

07-06 20:51:50.241: D/AndroidRuntime(8151): Shutting down VM
07-06 20:51:50.241: W/dalvikvm(8151): threadid=1: thread exiting with uncaught exception    (group=0x415a4ba8)
07-06 20:51:50.251: E/AndroidRuntime(8151): FATAL EXCEPTION: main
07-06 20:51:50.251: E/AndroidRuntime(8151): Process: com.example.thinice,PID: 8151
07-06 20:51:50.251: E/AndroidRuntime(8151): java.lang.NullPointerException
07-06 20:51:50.251: E/AndroidRuntime(8151):     at com.example.thinice.UserFragment.onCreateView(UserFragment.java:34)
07-06 20:51:50.251: E/AndroidRuntime(8151):     at android.support.v4.app.Fragment.performCreateView(Fragment.java:1500)
07-06 20:51:50.251: E/AndroidRuntime(8151):     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:927)
07-06 20:51:50.251: E/AndroidRuntime(8151):     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104)
07-06 20:51:50.251: E/AndroidRuntime(8151):     at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
07-06 20:51:50.251: E/AndroidRuntime(8151):     at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1467)
07-06 20:51:50.251: E/AndroidRuntime(8151):     at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:472)
07-06 20:51:50.251: E/AndroidRuntime(8151):     at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:141)
07-06 20:51:50.251: E/AndroidRuntime(8151):     at android.support.v4.view.ViewPager.populate(ViewPager.java:1068)
07-06 20:51:50.251: E/AndroidRuntime(8151):     at android.support.v4.view.ViewPager.populate(ViewPager.java:914)
07-06 20:51:50.251: E/AndroidRuntime(8151):     at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1436)
07-06 20:51:50.251: E/AndroidRuntime(8151):     at android.view.View.measure(View.java:16497)
07-06 20:51:50.251: E/AndroidRuntime(8151):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
07-06 20:51:50.251: E/AndroidRuntime(8151):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
07-06 20:51:50.251: E/AndroidRuntime(8151):     at android.view.View.measure(View.java:16497)
07-06 20:51:50.251: E/AndroidRuntime(8151):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
07-06 20:51:50.251: E/AndroidRuntime(8151):     at com.android.internal.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:327)
07-06 20:51:50.251: E/AndroidRuntime(8151):     at android.view.View.measure(View.java:16497)
07-06 20:51:50.251: E/AndroidRuntime(8151):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
07-06 20:51:50.251: E/AndroidRuntime(8151):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
07-06 20:51:50.251: E/AndroidRuntime(8151):     at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2291)
07-06 20:51:50.251: E/AndroidRuntime(8151):     at android.view.View.measure(View.java:16497)
07-06 20:51:50.251: E/AndroidRuntime(8151):     at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1912)
07-06 20:51:50.251: E/AndroidRuntime(8151):     at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1109)
07-06 20:51:50.251: E/AndroidRuntime(8151):     at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1291)
07-06 20:51:50.251: E/AndroidRuntime(8151):     at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:996)
07-06 20:51:50.251: E/AndroidRuntime(8151):     at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5600)
07-06 20:51:50.251: E/AndroidRuntime(8151):     at android.view.Choreographer$CallbackRecord.run(Choreographer.java:761)
07-06 20:51:50.251: E/AndroidRuntime(8151):     at android.view.Choreographer.doCallbacks(Choreographer.java:574)
07-06 20:51:50.251: E/AndroidRuntime(8151):     at android.view.Choreographer.doFrame(Choreographer.java:544)
07-06 20:51:50.251: E/AndroidRuntime(8151):     at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:747)
07-06 20:51:50.251: E/AndroidRuntime(8151):     at android.os.Handler.handleCallback(Handler.java:733)
07-06 20:51:50.251: E/AndroidRuntime(8151):     at android.os.Handler.dispatchMessage(Handler.java:95)
07-06 20:51:50.251: E/AndroidRuntime(8151):     at android.os.Looper.loop(Looper.java:136)
07-06 20:51:50.251: E/AndroidRuntime(8151):     at android.app.ActivityThread.main(ActivityThread.java:5001)
07-06 20:51:50.251: E/AndroidRuntime(8151):     at java.lang.reflect.Method.invokeNative(Native Method)
07-06 20:51:50.251: E/AndroidRuntime(8151):     at java.lang.reflect.Method.invoke(Method.java:515)
07-06 20:51:50.251: E/AndroidRuntime(8151):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
07-06 20:51:50.251: E/AndroidRuntime(8151):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
07-06 20:51:50.251: E/AndroidRuntime(8151):     at dalvik.system.NativeStart.main(Native Method)

Solution

You should use viewpager getAdapter(). The getcount () getadapter () method returns the object that provides the viewpager page

The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
分享
二维码
< <上一篇
下一篇>>