2016-08-03 59 views
0

我有一個專門用於管理sharedpreferences的類,但是我不斷收到一個NPE我的電話。繼承人的類,java.lang.NullPointerException:試圖調用虛擬方法'android.content.res.Resources android.content.Context.getResources()'

public class UserManager extends Activity{ 

Context mContext; 

UserManager(Context mContext){ 
    this.mContext = mContext; 
} 


public boolean getFromMatches(String userUid, String matchUid){ 
    SharedPreferences spMatches = mContext.getSharedPreferences(getString(R.string.match_key), Context.MODE_PRIVATE); 
    if(spMatches.contains(userUid + matchUid)){ 
     return true; 
    }else{ 
     return false; 
    } 
} 

}

這就是從我的主要活動通過:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main_screen); 

    userManager = new UserManager(getApplicationContext()); 
} 

的NPE在該行獲得:

SharedPreferences spMatches = mContext.getSharedPreferences(getString(R.string.match_key), Context.MODE_PRIVATE); 
+0

http://stackoverflow.com/a/2184151/5515371檢查這個 –

+0

@SpecialSnowflake使用this.mContext而不是mContext在行'mContext.getSharedPreferences(getString(R.string.match_key),Context.MODE_PRIVATE);' – Debojyoti

+0

你是否在onCreate()之前調用getFromMatches()? – X3Btel

回答

0

與此

public boolean getFromMatches(String userUid, String matchUid){ 
    SharedPreferences spMatches = mContext.getSharedPreferences(mContext.getString(R.string.match_key), Context.MODE_PRIVATE); 
    if(spMatches.contains(userUid + matchUid)){ 
     return true; 
    }else{ 
     return false; 
    } 
} 

更換getFromMatches函數調用getString或任何資源,你需要Context

0

使用這

SharedPreferences spMatches = mContext.getSharedPreferences(getResources().getString(R.string.match_key), Context.MODE_PRIVATE); 
相關問題