0

Итак, у меня есть проблема с контекстом внутри SharedPreferences, где он говорит LoginActivity.this. Это мой класс device.java и LoginActivity - это действие, с которого я хочу вызвать этот метод. Так это будет похоже на Device.Это или что-то в этом роде?Метод общих предпочтений Вызовите из Activity в Java Class

Методы:

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

ответ

1

Попробуйте это:

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

} 

И тогда, когда требуется объект контекста:

PreferenceManager.getDefaultSharedPreferences(MyActivity.getActivity()); 

Это мой обычный подход, когда мне нужен объект контекста вне класса Activity. Надеюсь, поможет!

+0

Вам просто нужно поместить 'activity = this;' где-то в onCreate. Обычно я помещаю его в начало класса, потому что он гарантирует, что getActivity() возвращает объект в любом случае. – Namnodorel

+0

Приветствия работали красиво! Я полностью погас, но сначала вы были правы: S – Lotse

+0

О, еще одна вещь, вы видите, где я прокомментировал performLogin. Этот метод также находится в LoginActivity, и я пытаюсь использовать его в своем классе Java. Как я могу это достичь? – Lotse