2014-07-06 2 views
13

उन्नत में आपकी मदद के लिए धन्यवाद। और खेद है कि यह एक बहुत ही मूर्ख सवाल है, लेकिन मुझे इसे कहीं और नहीं मिल रहा है। जो मैं चाहता हूं, मूल रूप से, मेरे कोडपेजर में मौजूद पृष्ठों की कुल राशि निर्धारित करने के लिए, जब यह सब ठीक हो गया है, जैसे कि मेरे कोड में। मैंने कोशिश की है (बाद के संस्करण पर) "आकार परिवर्तनीय" को एफ के रूप में जोड़ना (देखें, फर्स्टफ्रैगमेंट)। यह एक ज्ञात संख्या नहीं है, क्योंकि उपयोगकर्ता इनपुट के रूपों की संख्या (दृश्य) मैं बनाउंगा, और इसे एक उद्देश्य के रूप में फर्स्टफ्रैगमेंट में भेज दूंगा। तो मैंने कोशिश की है:एक दृश्य पेजर में "अंतिम पृष्ठ" कैसे ढूंढें। या विचारों की कुल 'संख्या'। एंड्रॉइड डेवलपमेंट

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

फर्स्ट फ्रैगमेंट के अंदर। लेकिन जब उपयोगकर्ताफ्रेगमेंट "pagenumbers" के तहत अपने तर्क निष्कर्ष निकालता है तो यहलौटा रहा है। फिर मैंने FragmentAdapter के अंदर रहने वाली getCount() विधि तक पहुंच प्राप्त करने का प्रयास किया, हालांकि, मुझे यकीन नहीं है कि इस बारे में कैसे जाना है, जब मुझे इसकी ज़रूरत है तो उपयोगकर्ताफ्रैगमेंट के अंदर एम।

मैं स्पष्टीकरण में मदद करने के लिए शायद क्या करने की कोशिश कर रहा हूं, क्या मैं "वर्तमान पृष्ठ जानकारी" निकालने जा रहा हूं जिसे अब मैं अपनी पिछली पोस्ट के लिए धन्यवाद कर रहा हूं और जिनकी मदद मिली। अब मैं देखना चाहता हूं कि "currentpage == size (// जो पृष्ठों की संख्या है। व्यूअरजर में कुल दृश्य)"। तो ऑनक्लिक विधि में आप UserFragment में देख सकते हैं, यदि यह अंतिम पृष्ठ है, और उपयोगकर्ता अगले पृष्ठ पर जाने के लिए बटन हिट करता है। मैं इसे किसी अन्य गतिविधि पर कूदना चाहता हूं, जहां यह सभी रूपों से एकत्र किए गए सभी स्पैरएरे डेटा का उपयोग करता है। (जिसे मुझे इस स्पैरएरे डेटा को एक इरादे में रखने के तरीके की सहायता चाहिए, मैं शायद इसके साथ एक नया प्रश्न बनाउंगा ... क्योंकि यह बहुत संबंधित नहीं है)। इसलिए यदि आप या तो मुझे काम करने के अपने मौजूदा प्रयासों (इसे ठीक से कैसे करें) प्राप्त करने में सहायता कर सकते हैं या बस एक पूरी तरह से नई विधि का सुझाव दे सकते हैं तो मैं खुश हूं। जब तक मैं इसे काम कर सकता हूं!

उन्नत में आपकी सभी सहायता के लिए बहुत बहुत धन्यवाद। कृपया सहायता कीजिए!

मेरे 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; 

    } 

} 

तुम मेरे कोड के किसी भी अधिक देखने के लिए की जरूरत है, तो कृपया मुझे बताएं। लेकिन यह वास्तव में मुझे परेशान कर रहा है। तो अगर कोई वहां मेरी मदद कर सकता है, तो यह शानदार होगा! उन्नत में आपका बहुत बहुत धन्यवाद।

FragmentAdapter.java:

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; 
    } 




    } 

संपादित करें: अनुशंसित समाधान लिए Logcat फ़ाइल:

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) 

 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 (यह मेरा गतिविधि है)

+0

जब ViewPager निष्क्रिय होता है, तो कुल विचार हमेशा 3 (मध्य तक पहुंचते हैं) या 2 (किनारे पर पहुंचते हैं), अंतिम पृष्ठ 'currentItem + 1' है, यह नियम है, अनुमान की आवश्यकता नहीं है। – VinceStyling

उत्तर

40

आप का उपयोग करना चाहिए ViewPager.getAdapter() getCount() getAdapter() विधि रिटर्न। ऑब्जेक्ट जो ViewPager के लिए पृष्ठों की आपूर्ति करता है।

0

OnCreate() में:

ViewPager vp = (ViewPager) findViewById(R.id.viewPager); 


System.out.println(vp.getChildCount()); 

निम्नलिखित कोड मेरे लिए ठीक काम कर रहा है:

public class ViewFlipperMainActivity extends Activity { 
    private ViewFlipper viewFlipper; 
    private float lastX; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     requestWindowFeature(Window.FEATURE_NO_TITLE); 
     setContentView(R.layout.help_flipper); 
     viewFlipper = (ViewFlipper) findViewById(R.id.view_flipper);  
     System.out.println(viewFlipper.getChildCount()); 
    } 
} 
+0

मैंने कोशिश की कि मेरी UserFragment फ़ाइल में, OnCreate() में; और मुझे यह लॉगकैट फ़ाइल (ऐप क्रैश) मिलती है: मैं अपने ओपी – Leon92

+0

पर एक संपादन में लॉग बिल्ली जोड़ूंगा आपके संबंधित कोड में लाइन नंबर 34 क्या है? – Skynet

+0

लाइन 34 = int pagenum = vp.getChildCount(); – Leon92

संबंधित मुद्दे