2016-08-03 106 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); 
相关问题