0

Привет в моем проекте Я использую Glide lib для загрузки изображения с сервера, тот же код работал нормально, но когда я расширяю свой класс до приложения для глобального контекста, я получение ошибкиКонтекст не работает над Glide при расширении приложения на android

Мой глобальный класс для контекста

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> 

Это фрагмент, где я использую LIB Glide для ПОС Ио ADING от сервера

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 

Пожалуйста, помогите мне в этом, что не так я сделал здесь

+0

'context' не инициализируется, когда Glide называет. Просто передайте 'GlobalAppContextSingleton.getInstance(). GetApplicationContext()' в 'Glide.with()'. –

+0

Я сделал это, но до сих пор я получаю ту же ошибку Glide.with (GlobalAppContextSingleton.getInstance(). GetApplicationContext()) – Jagan

+0

, если я удалю андроид: name = ". GlobalAppContextSingleton" в AndroidManifest кода работает нормально, но я не знаю, почему не работает, когда я добавляю класс приложения – Jagan

ответ

1

Использование 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); 

Update Добавить .diskCacheStrategy(DiskCacheStrategy.ALL)

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

Нет, теперь я получаю такую ​​же ошибку. Plz help me – Jagan

+0

@Jagan попробуйте добавить раздел обновления. –