Fragment getView () gibt für Fragmente, die von einem FragmentStatePagerAdapter erstellt wurden, immer null zurück

Ich habe viel über Fragmente gelesen. Habe festgestellt, dass andere Personen Probleme beim Abrufen der Fragmentansicht haben, weil immer null zurückgegeben wurde, aber keine Antwort mein Problem gelöst hat. Was ich versuche, ist eine Bildergalerie zu erstellen. Ich habe ein Fragment, das eine Bildansicht enthält. Zum Anzeigen der Fragmente verwende ich einen android.support.v4.view.ViewPager. Und die zu fütternViewPager Ich benutze einandroid.support.v4.app.FragmentStatePagerAdapter.

Das Problem ist, dass ich, wenn alles erstellt ist und die Bilder angezeigt werden, das aktuell angezeigte Bild auf der Festplatte speichern möchte. Ich muss also das aktuelle Fragment imageview abrufen, kann es aber nicht, da fragment.getView () immer null ist, die mit dem Fragment verbundene Aktivität ebenfalls null ist und ich nicht herausfinden kann, warum. Hier ein Code, um zu sehen, ob hier jemand helfen kann:

Das ist mein Fragment:

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

Und das ist mein Adapter:

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

Und dies ist die Hauptaktivität, beachte den Kommentar mit dem get:

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

Entschuldigung für die langen Quellen, ich habe alles gesäubert, was ich konnte, aber ich wollte alle Spielparts präsentieren. Könnte jemand raten, was passiert?

Danke im Voraus.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage