从活动到Java类的共享首选方法调用

问题描述:

因此,我目前遇到了SharedPreferences内部的上下文问题,它说LoginActivity.this。这是我的device.java类和LoginActivity是我想从中调用此方法的活动。那么它会像Device.This还是这些线?从活动到Java类的共享首选方法调用

方法:

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

试试这个:

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