2017-07-10 4 views
1

ほとんどのデバイスでGoogle Playが動作しますが、一部のSamsung(SM-G531H、SM-G530BT)、HUAWEI、Lenovoデバイスのように見えます。getSharedPreferencesコール。getSharedPreferences一部のデバイスでヌルポインタの例外が返される

私はこれが方法である

public UserStats(Context mContext) { 

    CRASH HERE 

     sharedPreferences = mContext.getSharedPreferences(PREF_USER,Context.MODE_PRIVATE); 

     } 

コンストラクタでsharedPreferenceヘルパークラスを持っている

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

     mContext = context; 
     //init firebase analytics 
     mFirebaseAnalytics = FirebaseAnalytics.getInstance(context); 
    } 

(私はonAttachgetSharedPreferencesを呼び出していないです)のフラグメント法にonAttach(Context context)からコンテキストへの参照を取りますsharedPreferenceを呼び出すフラグメント

private void setGoal(int calories){ 
     new UserStats(mContext).setNewGoal(calories); 

     tvGoal.setText("Goal\n" + calories + " Cal"); 
    } 

それはなぜ起こるか?それを避ける方法は? (私はそれをデバッグできません、Firebaseコンソールでクラッシュを受け取ります)

+0

すべての関連コードを投稿してください。 – earthw0rmjim

+0

ちょっと、onAtttach()の呼び出しで矛盾しているのを見ています(ここではhttps://stackoverflow.com/questions/32077086/android-onattachcontext-not-called-for-api-23)。あなたはそれをチェックしましたか?私は代替案を探すと言うだろう。 – Shaishav

+0

興味深いですが、前にgetActivity()を使用しましたが、同じ結果でした –

答えて

0

利用できます。

フラグメントの場合は、getContext()を使用してください。

アダプタクラスの場合は、contextを使用し、アダプタのコンストラクタのContextパラメータを追加します。

0

mContextの代わりにgetActivity()を使用してください。フラグメントの参照は見つかりません。だから、アプリがクラッシュします。

+0

私は以前getActivity()を使用しましたが、同じ結果が同じクラッシュを受けました –

2

使用getApplicationContext()を使用すると、アクティビティの使用getApplicationContext()している場合は、常に

+0

必ずしもそうではありません。アクティビティ固有のプリファレンスを使用する場合は、アクティビティコンテキストを使用します。 – BladeCoder

関連する問題