关键词:
【中文标题】用于 onActivityCreated 中通用图像加载器的片段中进度条的 NullPointerException【英文标题】:NullPointerException for progressbar in fragment for Universal Image Loader in onActivityCreated 【发布时间】:2014-08-13 00:08:40 【问题描述】:我遇到了无法诊断的奇怪 NPE。我知道它来自引用我的 ProgressBar 微调器,但我不知道为什么,因为我在 onCreateView 中为片段实例化它。
下面是我的片段的代码。在你看之前,我正在使用通用图像加载器来加载图像。如果我完全删除微调器 E.G. 的代码行,图像会加载。 spinner.setVisibility(View.GONE); spinner.setVisibility(View.VISIBLE);
import android.app.Activity;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.assist.FailReason;
import com.nostra13.universalimageloader.core.assist.ImageScaleType;
import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer;
import com.nostra13.universalimageloader.core.listener.SimpleImageLoadingListener;
/**
* A simple @link Fragment subclass.
* Activities that contain this fragment must implement the
*
* to handle interaction events.
* Use the @link ImageFragment#newInstance factory method to
* create an instance of this fragment.
*
*/
public class ImageFragment extends Fragment
// TODO: Rename parameter arguments, choose names that match
private static final String ARG_PARAM1 = "param1";
private static final String ARG_PARAM2 = "param2";
private int mImageNum;
private ImageView imageDisplay;
private TextView textTest;
public ProgressBar spinner;
private String mUrl;
private ImageLoader imageLoader = ImageLoader.getInstance();
DisplayImageOptions options;
/**
* Use this factory method to create a new instance of
* this fragment using the provided parameters.
*
* @return A new instance of fragment ImageFragment.
*/
// TODO: Rename and change types and number of parameters
public static ImageFragment newInstance(int position, String url)
ImageFragment fragment = new ImageFragment();
Bundle args = new Bundle();
args.putInt(ARG_PARAM1, position);
args.putString(ARG_PARAM2, url);
fragment.setArguments(args);
return fragment;
public ImageFragment()
// Required empty public constructor
@Override
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
mImageNum = getArguments() != null ? getArguments().getInt(ARG_PARAM1) : -1;
mUrl = getArguments() != null ? getArguments().getString(ARG_PARAM2) : null;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
final View v = inflater.inflate(R.layout.fragment_image, container, false);
imageDisplay = (ImageView) v.findViewById(R.id.imageView);
spinner = (ProgressBar) imageDisplay.findViewById(R.id.loading);
options = new DisplayImageOptions.Builder()
.showImageForEmptyUri(R.drawable.ic_empty)
.showImageOnFail(R.drawable.ic_error)
.resetViewBeforeLoading(true)
.cacheOnDisk(true)
.imageScaleType(ImageScaleType.EXACTLY)
.bitmapConfig(Bitmap.Config.RGB_565)
.considerExifParams(true)
.displayer(new FadeInBitmapDisplayer(300))
.build();
return v;
@Override
public void onActivityCreated(Bundle savedInstanceState)
super.onActivityCreated(savedInstanceState);
imageLoader.displayImage(mUrl, imageDisplay, options, new SimpleImageLoadingListener()
@Override
public void onLoadingStarted(String imageUri, View view)
spinner.setVisibility(View.VISIBLE);
@Override
public void onLoadingFailed(String imageUri, View view, FailReason failReason)
String message = null;
switch (failReason.getType())
case IO_ERROR:
message = "Input/Output error";
break;
case DECODING_ERROR:
message = "Image can't be decoded";
break;
case NETWORK_DENIED:
message = "Downloads are denied";
break;
case OUT_OF_MEMORY:
message = "Out Of Memory error";
break;
case UNKNOWN:
message = "Unknown error";
break;
spinner.setVisibility(View.GONE);
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage)
spinner.setVisibility(View.GONE);
);
请帮忙!我不擅长使用 Fragments,我不知道为什么它不起作用
【问题讨论】:
【参考方案1】:final View v = inflater.inflate(R.layout.fragment_image, container, false);
imageDisplay = (ImageView) v.findViewById(R.id.imageView);
spinner = (ProgressBar) imageDisplay.findViewById(R.id.loading);
这个“微调器”是片段视图的子视图还是“imageDisplay”?
或许,应该是spinner = (ProgressBar) v.findViewById(R.id.loading);
【讨论】:
【参考方案2】:你应该改变这个
spinner = (ProgressBar) imageDisplay.findViewById(R.id.loading);
与
spinner = (ProgressBar) v.findViewById(R.id.loading);
您应该从Fragment
的膨胀视图中找到View
。
【讨论】:
下面这个人最先回答,但你们都是我书中的赢家! @user2977650 哦,那我想你是我希望的新伙伴!对onActivityCreated片段回调有啥误解吗?
】对onActivityCreated片段回调有啥误解吗?【英文标题】:IsthereanymisunderstandingabouttheonActivityCreatedfragmentcallback?对onActivityCreated片段回调有什么误解吗?【发布时间】:2020-07-2408:31:50【问题描述】:onActivityCreated似乎意味着“这个片... 查看详情
onActivityCreated 已弃用,如何正确使用 LifecycleObserver?
】onActivityCreated已弃用,如何正确使用LifecycleObserver?【英文标题】:onActivityCreatedisdeprecated,howtoproperlyuseLifecycleObserver?【发布时间】:2020-08-0200:37:55【问题描述】:Google在Android上弃用Fragment的onActivityCreated()并推荐使用LifeCycleObserv... 查看详情
为啥会调用fragment的onCreateView、onCreate、onActivityCreated
】为啥会调用fragment的onCreateView、onCreate、onActivityCreated【英文标题】:Whydoesthefragment\'sonCreateView,onCreate,onActivityCreatedarecalled为什么会调用fragment的onCreateView、onCreate、onActivityCreated【发布时间】:2013-06-1617:03:27【问题描述】:我有... 查看详情
如何在 OnActivityCreated 中解决这个不受欢迎的问题?
】如何在OnActivityCreated中解决这个不受欢迎的问题?【英文标题】:HowtoresolvethisdeprectedprobleminOnActivityCreated?【发布时间】:2021-09-3014:57:57【问题描述】:我得到\'onActivityCreated(android.os.bundle)\'已被弃用。packageexample.com.fragmentrecycler... 查看详情
在 onActivityCreated() 之后再次调用 Fragment 的 onAttach()
】在onActivityCreated()之后再次调用Fragment的onAttach()【英文标题】:Fragment\'sonAttach()calledagainafteronActivityCreated()【发布时间】:2019-10-2501:52:06【问题描述】:我正在添加一个带有编辑文本和复选框的片段,并且我正在尝试在方向更改... 查看详情
Fragment中onCreate()、onCreateView()和onActivityCreated()的区别和使用
】Fragment中onCreate()、onCreateView()和onActivityCreated()的区别和使用【英文标题】:DifferenceandusesofonCreate(),onCreateView()andonActivityCreated()infragments【发布时间】:2015-05-0921:05:57【问题描述】:片段中的onCreate()、onCreateView()和onActivityCre 查看详情
为啥我们可以在 onActivityCreated 之前运行的 onCreateView 中调用 getActivity()?
】为啥我们可以在onActivityCreated之前运行的onCreateView中调用getActivity()?【英文标题】:whywecancallgetActivity()inonCreateViewwhichrunbeforeonActivityCreated?为什么我们可以在onActivityCreated之前运行的onCreateView中调用getActivity()?【发布时间】:2... 查看详情
onactivitycreated啥时候执行
...);onCreateView():为fragment绑定UI视图时,该方法被回调;onActivityCreated():当宿主Activity的onCreate()方法返回后,该方法被回调;onDestroyView():当与fragment绑定的UI视图被移除时,该方法被回调;onDetach():当fragment不再依附于Activity... 查看详情
Android(Fragment) - 是不是建议在 onActivityCreated 方法中初始化视图对象?
】Android(Fragment)-是不是建议在onActivityCreated方法中初始化视图对象?【英文标题】:Android(Fragment)-IsitrecommendedtoinitializeaviewobjectinsideonActivityCreatedmethod?Android(Fragment)-是否建议在onActivityCreated方法中初始化视图对象?【发布时间】:... 查看详情
EmailBackend 用于在 Django 中通过多个 SMTP 发送电子邮件
】EmailBackend用于在Django中通过多个SMTP发送电子邮件【英文标题】:EmailBackendforsendingemailthroughmultipleSMTPinDjango【发布时间】:2012-11-1510:40:50【问题描述】:使用标准设置很好地解释了让Django发送电子邮件here,如下所示。EMAIL_BACKEND... 查看详情
AndroidX 活动结果 API onActivityCreated 已弃用
】AndroidX活动结果APIonActivityCreated已弃用【英文标题】:AndroidXActivityResultAPIonActivityCreatedDeprecated【发布时间】:2021-03-2501:06:41【问题描述】:在应用级别Gradle中实现以下依赖项后implementation"androidx.fragment:fragment:1.3.0-beta02"implementati... 查看详情
fragment的oncreateview和onactivitycreate之间的区别(转)
...CreateView,butwhatotherfunctionalitycanbeinonCreateViewvs.whatshouldwaitforonActivityCreated?Mycurrentimplementationusesseparateactivitiesforeverything,andatypicalactivitydoesmostofitsworkinitsonCreatemethod,includinginflatingtheview,settingthecontentview,initializingthevariouswidgetswithdata,settin... 查看详情
在 onActivityCreated/onStart/onViewCreated 方法内的 getView() 上出现 NullPointerException 警告
】在onActivityCreated/onStart/onViewCreated方法内的getView()上出现NullPointerException警告【英文标题】:NullPointerExceptionWarningongetView()insideonActivityCreated/onStart/onViewCreatedmethod【发布时间】:2015-07-1818:32:04【问题描述】:我知道getView()可 查看详情
从 Rails 的 JSON 响应中寻找用于 Angular 中通用错误处理的范例
】从Rails的JSON响应中寻找用于Angular中通用错误处理的范例【英文标题】:LookingforparadigmtouseforgenericerrorhandlinginAngularfromaJSONresponsefromRails【发布时间】:2013-04-0221:10:59【问题描述】:我正在构建一个应用程序,它被构建为Rails服务... 查看详情
用于从该框中通过 SSH 连接到 jumphost 和 sftp 的 Python 脚本
】用于从该框中通过SSH连接到jumphost和sftp的Python脚本【英文标题】:PythonscripttoSSHintoajumphostandsftpfromwithinthatbox【发布时间】:2021-09-2812:31:57【问题描述】:我目前正在尝试编写一个气流作业,该作业将允许我通过ssh进入EC2实例,... 查看详情
onActivityCreated() 中的捆绑返回 null,即使在 onSaveInstanceState() 中设置值之后也是如此
】onActivityCreated()中的捆绑返回null,即使在onSaveInstanceState()中设置值之后也是如此【英文标题】:BundleinonActivityCreated()returnsnull,evenaftersettingvaluesinonSaveInstanceState()【发布时间】:2013-10-2715:58:38【问题描述】:在应用程序中,每当f... 查看详情
Base64 vs HEX 用于在 XML doc 中通过 Internet 发送二进制内容
】Base64vsHEX用于在XMLdoc中通过Internet发送二进制内容【英文标题】:Base64vsHEXforsendingbinarycontentovertheinternetinXMLdoc【发布时间】:2011-03-1203:53:17【问题描述】:在XML文档中的系统之间发送二进制内容的最佳方式是什么我知道Base64和He... 查看详情