2016-08-03 18 views
0

Ich habe eine Klasse, die sich auf die Verwaltung von geteilten Voreinstellungen spezialisiert hat, aber ich bekomme immer eine NPE auf einer von meine Anrufe. Heres die Klasse, istjava.lang.NullPointerException: Versuch, die virtuelle Methode aufzurufen '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; 
    } 
} 

}

Das, was aus meiner Haupttätigkeit geführt wird:

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

    userManager = new UserManager(getApplicationContext()); 
} 

Die NPE in dieser Zeile empfangen wird:

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

http://stackoverflow.com/a/2184151/5515371 müssen überprüfen diese –

+0

@SpecialSnowflake Verwenden this.mContext anstelle von mcontext in der Zeile 'mContext.getSharedPreferences (getString (R.string.match_key), Context.MODE_PRIVATE);' – Debojyoti

+0

Rufen Sie getFromMatches() vor onCreate() auf? – X3Btel

Antwort

0

ersetzen die getFromMatches Funktion mit diesem

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; 
    } 
} 

für getString aufrufen oder alle Ressourcen werden Sie Context

0

Verwenden dies

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