android - Fragment getView() 总是返回null

如果你在使用Fragment的时候,有时会遇到调用Fragment.getView()的时候,总是返回一个null值。

可能出现此问题的原因是,你在Activity中,调用adapter.getItem()来获取当前Fragment。

大概如下

int index= _viewPaper.getCurrentItem();

Fragment fragment=_myFragmentAdapter.getItem(index);

//这一步总是返回null值

View view= fragment.getView();

ImageView iv=(ImageView)view.findViewWithTag("imageView");

Bitmap bmp=iv.getDrawingCache();

这是因为,这个Adapter.getItem方法返回的是一个新的Fragment实例,并不是当前的Fragment。

原文解释如下:

That is happening because you‘re expecting _myFragmentAdapter.getItem(index); to return the Fragmentthat the ViewPager uses for the page corresponding to the specified index. That will not happen as the ViewPager has already called the getItem method to get the fragments it needs and after your call the getItem method you get a new ImageViewURLFragment instance. This new instance isn‘t tied to the Activity(getActivity() returns null) and its view wasn‘t created.

解决方法,用如下代码来获取一个当前可见的Fragment:

int index = _viewPaper.getCurrentItem();

Fragment fragment = _viewPaper.getAdapter().instantiateItem(_viewPaper, index);

//...

参考地址:http://stackoverflow.com/questions/14789519/fragment-getview-always-returning-null-for-fragments-created-by-a-fragmentstat

时间: 2024-11-06 00:56:14

android - Fragment getView() 总是返回null的相关文章

Android开发:getViewById返回null的原因定位

最近在研究开发一些基于Android的App,遇到了一些问题,其中一个比较关键的是在Activity中的onCreate()方法中获取Button对象,代码大概如下: private Button mTrueButton; @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_quiz); mTr

Fragment使用findFragmentById返回null

@Override public void onClick(View v) { switch (v.getId()){ case R.id.btn1: replaceFragment(new AnotherRightFragment(),"anotherRightFragment"); // //在activity中获得fragment实例 // AnotherRightFragment ar = (AnotherRightFragment)getFragmentManager().f

android fragment点击返回键实现内容切换?

============问题描述============ 我有一个fragment,上有一个button和textview,默认button是隐藏的,通过点击菜单栏上的一个详细信息的按钮,将button显示出来,现在有没有办法通过点击返回键实现返回上一个只有textview的页面??? ============解决方案1============ 在Activity中重写onBackPress坚挺返回按钮事件 ============解决方案2============ 将fragment添加到回退

【Fragment精深系列5】fragment findViewById()返回null完全解析

一.引入 ??你是不是经常遇到在fragment中调用findViewById方法寻找fragment布局文件中的控件返回null的现象.我之前也遇到了这个问题,虽然后来解决了,但是心中一直有疑惑,最近有时间停下来,结合别人的解答和自己的思考,对这个问题进行彻底的梳理. 二.使用getActivity().findViewById 1.getActivity的介绍 ??Fragment中有一个getActivity()的方法.返回与Fragment关联的Activity对象(通过该对象可以查找a

Attempt to write to field 'android.support.v4.app.FragmentManagerImpl android.support.v4.app.Fragment.mFragmentManager' on a null object reference

E/AndroidRuntime﹕ FATAL EXCEPTION: mainProcess: org.example.magnusluca.drawertestapp, PID: 3624java.lang.NullPointerException: Attempt to write to field 'android.support.v4.app.FragmentManagerImpl android.support.v4.app.Fragment.mFragmentManager' on

Android 成功 使用GPS获取当前地理位置(解决getLastKnownLocation 返回 null)

最近遇到一个比较棘手的问题:使用GPS定位无法获取当前的地理位置,即getLastKnownLocation方法始终返回null. 后来一篇博文 getLastKnownLocation()返回null的解决 帮了我大忙,在此对该博客作者表示感谢,但是有几点需要注意的,我觉得有必要补充一下,否则看了这篇博文也还是得不到当前的地理位置. 第一:当使用GPS定位时,最好不要使用getLastKnownLocation方法获得当前位置对象Location,因为该对 象可以在onLocationChan

Android:解决view.getDrawingCache()返回null的问题

项目开发中,有时候需要将某个View的内容(包含其子View)以图片的方式保存下来(类似于截图),于是首先想到view.getDrawingCache()这个方法,它将返回一个Bitmap. 可是我在使用时,这个方法总是返回null,总网上查了下,需要设置一堆的参数,但依然不怎么好使. 突然想到换一个思路,既然获取View的内容这么困难,还不如将 View 的内容直接draw到另一个canvas上去!于是解决方案诞生了,亲测可用: public static Bitmap getViewBitm

Android Fragment的介绍与使用(案例Demo)

应用场景: 众所了解Android上的界面展示都是通过Activity实现的,但是Activity也有它的局限性,同样的界面在手机上显示可能很好看,在平板上就未必了.为了让界面可以在平板上更好地展示,Android在3.0版本引入了Fragment(碎片)功能,它非常类似于Activity,可以像Activity一样包含布局.Fragment通常是嵌套在Activity中使用的.首先需要注意,Fragment是在3.0版本引入的,如果你使用的是3.0之前的系统,需要先导入android-supp

android Fragment 实例 Listfragment listiew 下拉刷新 上拉加载 横向滑动事件监听

Android Fragment开发实例及他色功能说明 代码太长,请网盘下载附件源代码: http://yunpan.cn/cs24a2Z7C5kRk (提取码:a0cf)  有疑问的欢迎联系QQ972910164 一. CustomListView说明:可下拉刷新,上拉加载,横向滑动接口回调, /** * 功能类似ListView,天机以下特性: * 1. 可下拉刷新,上拉加载,实现CustomListView.OnPullListener接口 * 3. Slide切换,实现CustomLis