0

So habe ich derzeit ein Problem mit dem Kontext in SharedPreferences, wo es LoginActivity.this heißt. Dies ist meine device.java-Klasse und LoginActivity ist die Aktivität, von der ich diese Methode aufrufen möchte. Also wäre es wie Device.This oder etwas in dieser Richtung?Shared Preference Method Aufruf von Aktivität zu Java-Klasse

Methoden:

public void validateLogin(String username, String password, String ipAddress) { 

    SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(LoginActivity.this); 

    if (sharedPreferences.contains("ip") && sharedPreferences.contains("username") && sharedPreferences.contains("password")) { 
     String strUsername = sharedPreferences.getString("username", username); 
     String strPassword = sharedPreferences.getString("password", password); 
     String strIpAddress = sharedPreferences.getString("ip", ipAddress); 
     //performLogin(strUsername, strPassword, strIpAddress); 
    } 
} 

public void saveSP(String username, String password, String ipAddress) { 

    SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(LoginActivity.this); 

    sharedPreferences.edit() 
      .putString("ip", ipAddress) 
      .putString("username", username) 
      .putString("password", password) 
      .commit(); 
} 

Antwort

1

Try this:

public class MyActivity extends Activity{ 

    private static MyActivity activity; 

    @Override 
    protected void onCreate(Bundle savedInstanceState){ 
     super.onCreate(savedInstanceState); 

     activity = this; 

     //... 
    } 

    public static MyActivity getActivity(){ 
     return activity; 
    } 

} 

Und dann, wenn Sie das Kontextobjekt benötigen:

PreferenceManager.getDefaultSharedPreferences(MyActivity.getActivity()); 

Das ist meine übliche Vorgehensweise ist, wenn ich ein Kontextobjekt außerhalb brauchen der Aktivitätsklasse. Ich hoffe es hilft!

+0

Sie müssen nur 'activity = this;' irgendwo in onCreate setzen. Normalerweise lege ich es am Anfang der Klasse ab, weil es sicherstellt, dass getActivity() auf jeden Fall ein Objekt zurückgibt. – Namnodorel

+0

Cheers hat gut funktioniert! Du hast mich komplett ausgeblendet, aber du warst am Anfang gleich: S – Lotse

+0

Oh du noch eine Sache, du siehst wo ich performLogin auskommentiert habe. Diese Methode ist auch in der LoginActivity und ich versuche, sie in meiner Java-Klasse zu verwenden. Wie kann ich das erreichen? – Lotse