18

मेरे व्यूपेजर के अंदर मेरे लेआउट में से एक बटन है। "R.layout.add_site"। मुझे बटन मारने का विकल्प चाहिए और यह मेरे लिए विशिष्ट पृष्ठ पर स्क्रॉल करें। मेरे पास पहले से ही विशिष्ट पृष्ठ पर स्वाइप करने का विकल्प है, लेकिन मैं दोनों को रखना चाहता हूं।व्यूपैगर में बटन विशिष्ट पृष्ठ पर स्क्रॉल

अब मुझे यकीन है कि ऐसा करने का एक तरीका है, लेकिन किसी कारण से, मैं इसे समझ नहीं सकता।

आप देखेंगे कि मैंने एक प्रयास किया है, लेकिन यह नहीं पता कि वांछित पृष्ठ पर स्क्रॉल करने के लिए कॉल करने के लिए कौन सी विधि कॉल करें। आर .layout.main कौन सा है।

मेरा कोड यहां है।

public class fieldsActivity extends Activity { 

Button addSiteButton; 
Button cancelButton; 
Button signInButton; 

/** 
* Called when the activity is first created. 
*/ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    // to create a custom title bar for activity window 
    requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); 

    setContentView(R.layout.fields); 
    // use custom layout title bar 
    getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.topbar); 

    Pager adapter = new Pager(); 
    ViewPager mPager = (ViewPager) findViewById(R.id.fieldspager); 
    mPager.setAdapter(adapter); 
    mPager.setCurrentItem(1); 


    addSiteButton = (Button) findViewById(R.id.addSiteButton); 
    addSiteButton.setOnClickListener(new View.OnClickListener() { 


     @Override 
     public void onClick(View v) { 
     // Don't know what method to call!? 



     } 


    }); 


    cancelButton = (Button) findViewById(R.id.cancel_button); 
    signInButton = (Button) findViewById(R.id.sign_in_button); 

} 

private class Pager extends PagerAdapter { 
    public int getCount() { 
     return 3; 

    } 

    @Override 
    public Object instantiateItem(View collection, int position) { 
     LayoutInflater inflater = (LayoutInflater) collection.getContext() 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     int resId = 0; 
     switch (position) { 
      case 0: 
       resId = R.layout.field01; 
       break; 
      case 1: 
       resId = R.layout.add_site; 





       break; 
      case 2: 
       resId = R.layout.main; 
       break; 

     } 

     View view = inflater.inflate(resId, null); 
     ((ViewPager) collection).addView(view, 0); 
     return view; 
    } 

    @Override 
    public void destroyItem(View arg0, int arg1, Object arg2) { 
     ((ViewPager) arg0).removeView((View) arg2); 
    } 
    @Override 
    public boolean isViewFromObject(View arg0, Object arg1) { 
     return arg0 == ((View) arg1); 
    } 
    @Override 
    public Parcelable saveState() { 
     return null; 
    } 


} 

} 

किसी भी मदद की सराहना की जाती है!

उत्तर

46

कॉल:

mPager.setCurrentItem(2); 
अपने onClick() विधि में

, या एक चिकनी स्क्रॉल के लिए:

mPager.setCurrentItem(2, true); 
+0

मुझे लगता है कि कोशिश की, लेकिन मैं एक मिल "Varialbe 'mPager' आंतरिक वर्ग के भीतर तक पहुँच जाता है अंतिम घोषित किया जाना चाहिए।।" – PhDeOliveira

+0

मुझे लगता है कि मेरा ऑनक्लिक कॉल गलत जगह पर है। मुझे इसे कहां रखना चाहिए? – PhDeOliveira

+0

mPager को अंतिम –

0

मैं वास्तव में उत्तर नहीं दे सकता क्यों वास्तव में ऐसा होता है, लेकिन आप setCurrentItem में देरी करता है, तो कुछ मिलीसेकंड के लिए कॉल करें जो इसे काम करना चाहिए। मेरा अनुमान है कि onResume के दौरान अभी तक एक प्रतिपादन पास नहीं किया गया है, और व्यूपागर को इस तरह की एक या कुछ चाहिए।

private ViewPager viewPager; 

@Override 
public void onResume() { 
    final int pos = 3; 
    viewPager.postDelayed(new Runnable() { 

     @Override 
     public void run() { 
      viewPager.setCurrentItem(pos); 
     } 
    }, 100); 
} 

मूल उत्तर:here