gpt4 book ai didi

java - 当我在 Android 上扩展应用程序时,上下文在 Glide 上不起作用

转载 作者:行者123 更新时间:2023-12-01 09:36:24 24 4
gpt4 key购买 nike

嗨,在我的项目中,我使用 Glide lib 从服务器加载图像,相同的代码工作正常,但是当我将类扩展到全局上下文的应用程序时,我收到错误

我的上下文全局类

public class GlobalAppContextSingleton extends Application {
private static GlobalAppContextSingleton mInstance;
private Context context;

@Override
public void onCreate() {
super.onCreate();

GlobalAppContextSingleton.getInstance().initialize(this);
}
public static GlobalAppContextSingleton getInstance() {
if (mInstance == null) mInstance = getSync();
return mInstance;
}

private static synchronized GlobalAppContextSingleton getSync() {
if (mInstance == null) mInstance =
new GlobalAppContextSingleton();
return mInstance;
}

public void initialize(Context context) {
this.context = context;
}

public Context getApplicationContext() {
return context;
}}

在我的 AndroidManifest 类中

 <application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:largeHeap="true"
android:supportsRtl="true"
android:name=".GlobalAppContextSingleton"
android:theme="@style/AppTheme"

>
<activity
android:name=".Activitys.LoginActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

这是我使用 Glide 库从服务器加载图片的 fragment

 public class ProfileFragment extends Fragment {


public ProfileFragment() {
// Required empty public constructor
}
TextView profile_txt_firstname,profile_txt_lastname,profile_txt_role;
ImageView profile_img_profilepic;
Context context;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment


View view = inflater.inflate(R.layout.fragment_profile, container, false);
preferenceData preference= new preferenceData(GlobalAppContextSingleton.getInstance().getApplicationContext());
profile_txt_firstname=(TextView)view.findViewById(R.id.profile_txt_firstname);
profile_txt_lastname=(TextView)view.findViewById(R.id.profile_txt_lastname);
profile_img_profilepic=(ImageView)view.findViewById(R.id.profile_img_profilepic);

profile_txt_firstname.setText(preference.getString("FirstName"));
profile_txt_lastname.setText(preference.getString("LastName"));

String pic =preference.getString("ProfilePicture");
byte[] decodedString = Base64.decode(pic, Base64.DEFAULT);
//Glide.with(GlobalAppContextSingleton.getInstance().getApplicationContext())
Glide.with(context)
.load(decodedString)
.asBitmap()
.placeholder(R.mipmap.ic_launcher)
.into(profile_img_profilepic);
// Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length);
// profile_img_profilepic.setImageBitmap(decodedByte);


return view;
}

@Override
public void onAttach(Context context) {
super.onAttach(context);
this.context=context;
}
}

我遇到的错误是

    FATAL EXCEPTION: main
Process: com.airbustask, PID: 22813
Theme: themes:{}
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object android.content.Context.getSystemService(java.lang.String)' on a null object reference
at com.bumptech.glide.load.engine.cache.MemorySizeCalculator.<init>(MemorySizeCalculator.java:35)
at com.bumptech.glide.GlideBuilder.createGlide(GlideBuilder.java:177)
at com.bumptech.glide.Glide.get(Glide.java:155)
at com.bumptech.glide.RequestManager.<init>(RequestManager.java:62)
at com.bumptech.glide.RequestManager.<init>(RequestManager.java:53)
at com.bumptech.glide.manager.RequestManagerRetriever.supportFragmentGet(RequestManagerRetriever.java:198)
at com.bumptech.glide.manager.RequestManagerRetriever.get(RequestManagerRetriever.java:104)
at com.bumptech.glide.manager.RequestManagerRetriever.get(RequestManagerRetriever.java:87)
at com.bumptech.glide.Glide.with(Glide.java:629)
at com.maintainsmart.Fragments.ProfileFragment.onCreateView(ProfileFragment.java:57)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:2074)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1286)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:758)
at android.support.v4.app.FragmentManagerImpl.execSingleAction(FragmentManager.java:1632)
at android.support.v4.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:637)
at android.support.v4.app.FragmentStatePagerAdapter.finishUpdate(FragmentStatePagerAdapter.java:166)
at android.support.v4.view.ViewPager.populate(ViewPager.java:1237)
at android.support.v4.view.ViewPager.populate(ViewPager.java:1085)
at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1611)
at android.view.View.measure(View.java:18799)
at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:715)
at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:461)
at android.view.View.measure(View.java:18799)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:135)
at android.view.View.measure(View.java:18799)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1458)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:746)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:629)
at android.view.View.measure(View.java:18799)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at android.view.View.measure(View.java:18799)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1458)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:746)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:629)
at android.view.View.measure(View.java:18799)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at com.android.internal.policy.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2905)
at android.view.View.measure(View.java:18799)
at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2108)
at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1224)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1460)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1115)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6023)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:858)
at android.view.Choreographer.doCallbacks(Choreographer.java:670)
at android.view.Choreographer.doFrame(Choreographer.java:606)
at android.view.Ch

请帮我解决我在这里做错了什么

最佳答案

在 fragment 中使用getActivity()

 Glide.with(context)
.load(decodedString)
.asBitmap()
.placeholder(R.mipmap.ic_launcher)
.into(profile_img_profilepic);

更改为

 Glide.with(getActivity())
.load(decodedString)
.asBitmap()
.placeholder(R.mipmap.ic_launcher)
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(profile_img_profilepic);

更新添加.diskCacheStrategy(DiskCacheStrategy.ALL)

  Glide.with(getActivity())
.load(decodedString)
.asBitmap()
.placeholder(R.mipmap.ic_launcher)
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(profile_img_profilepic);

关于java - 当我在 Android 上扩展应用程序时,上下文在 Glide 上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38866793/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com