द्वारा बनाए गए टुकड़ों के लिए शून्य लौट रहा है मैं टुकड़ों के बारे में बहुत कुछ पढ़ रहा हूं। अन्य लोगों को टुकड़ों के दृश्य को पुनः प्राप्त करने में समस्याएं आ रही हैं क्योंकि नल हमेशा वापस आ गया था लेकिन कोई जवाब मेरी समस्या का हल नहीं हुआ। मैं जो करने की कोशिश कर रहा हूं वह एक छवि गैलरी बना रहा है। मेरे पास एक टुकड़ा है जिसमें एक छवि दृश्य है। टुकड़े दिखाने के लिए मैं एक android.support.v4.view.ViewPager का उपयोग करता हूं। और ViewPager
को खिलाने के लिए मैं android.support.v4.app.FragmentStatePagerAdapter
का उपयोग करता हूं।फ्रैगमेंट getView() हमेशा FragmentStatePagerAdapter
समस्या यह है कि जब सब कुछ बनता है और छवियां दिखायी जाती हैं तो मैं वर्तमान दिखाए गए चित्र को डिस्क पर सहेजना चाहता हूं। तो मुझे वर्तमान खंड छविदृश्य प्राप्त करने की आवश्यकता है, लेकिन मैं नहीं कर सकता क्योंकि fragment.getView() हमेशा शून्य है, खंड के साथ जुड़ी गतिविधि भी शून्य है और मैं यह नहीं समझ सकता कि यह क्यों है।
यह मेरा टुकड़ा है:
public class ImageViewURLFragment extends Fragment
{
String _url;
@Override
public View onCreateView(LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState)
{
// The last two arguments ensure LayoutParams are inflated
// properly.
View rootView = new ImageViewURL(getActivity(), _url);
return rootView;
}
public void setImageURL(String imgURL)
{
_url=imgURL;
}
}
और ये मेरे अनुकूलक: यहाँ कुछ कोड है, तो किसी को भी यहाँ मदद कर सकता है देखने के लिए
public class ImageViewURLCustomAdapter extends FragmentStatePagerAdapter
{
List<String> _urls=new ArrayList<String>();
public ImageViewURLCustomAdapter(FragmentManager fm)
{
super(fm);
}
@Override
public Fragment getItem(int i)
{
ImageViewURLFragment fragment = new ImageViewURLFragment();
fragment.setImageURL(_urls.get(i));
return fragment;
}
public String getItemUrl(int i)
{
return _urls.get(i);
}
@Override
public int getCount() {
return _urls.size();
}
@Override
public CharSequence getPageTitle(int position) {
return "OBJECT " + (position + 1);
}
public void addImageURL(String url)
{
_urls.add(url);
}
}
और यह मुख्य गतिविधि है, साथ टिप्पणी नोटिस प्राप्त करें:
public class MainActivity extends FragmentActivity
{
ImageViewURLCustomAdapter _iva=null;
ViewPager _vp=null;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
_iva = new ImageViewURLCustomAdapter(
getSupportFragmentManager());
_iva.addImageURL("http://upload.wikimedia.org/wikipedia/commons/b/b4/Saturn_(planet)_large.jpg");
_iva.addImageURL("http://planetthreesixty.com/sites/default/files/planet.jpg");
_vp = (ViewPager) findViewById(R.id.viewpager);
_vp.setAdapter(_iva);
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
if(item.getItemId()==R.id.saveToSD)
{
int index= _vp.getCurrentItem();
Fragment fragment=_iva.getItem(index);
//THis is where I need to get fragment view, but always returns null
View view= fragment.getView();
ImageView iv=(ImageView)view.findViewWithTag("imageView");
Bitmap bmp=iv.getDrawingCache();
}
return super.onOptionsItemSelected(item);
}
}
लंबे स्रोतों के लिए खेद है, मैंने जो कुछ भी कर सकता था उसे साफ़ कर दिया है, लेकिन मैं पूर्व सभी खेल भागों भेजा। क्या कोई अनुमान लगा सकता है कि क्या हो रहा है?
अग्रिम धन्यवाद।
धन्यवाद इस के लिए एक बहुत। – Notbad
कुछ और जानकारी खोजने के बाद, मैं पूछना चाहता हूं कि आपको तत्काल इटैम के बारे में यह जानकारी कैसे मिली। मेरा मतलब है कि मैंने पढ़ा है कि यह एडाप्टर प्रत्येक बार एक नया निर्माण करने के बजाय टुकड़ों का पुन: उपयोग कर सकता है, लेकिन आपको वह जानकारी कहाँ मिली जो हम कर सकते थे तुरंत तत्काल कॉल करें और यह खंड के पिछले उदाहरण को वापस कर देगा, न कि नया? और दूसरी तरफ आप पेजव्यू के लिए यह कैसे करेंगे (वर्तमान आइटम प्राप्त करें)? अग्रिम में धन्यवाद। – Notbad
@Notbad यदि आप 'FragmentStatePagerAdapter' के लिए स्रोत कोड देखते हैं तो आप देखेंगे कि 'instantiateItem' विधि या तो एक कैश्ड टुकड़ा या एक नया टुकड़ा वापस कर देगा। इस मामले में जब आप वर्तमान खंड की तलाश में हैं तो यह कैश संस्करण होगा। * और दूसरी तरफ आप पेजव्यू के लिए यह कैसे करेंगे (वर्तमान आइटम प्राप्त करें)? * - मुझे समझ में नहीं आता कि आप क्या पूछ रहे हैं। FragmentStatePagerAdapter से वर्तमान खंड प्राप्त करने के लिए आप उत्तर से मेरे कोड का उपयोग करेंगे। – Luksprog