从活动到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类。希望能帮助到你!
你只需要把'activity = this;'放在onCreate的某处。我通常把它放在类的开头,因为它确保无论如何getActivity()都返回一个对象。 – Namnodorel
干杯干得很好!叶我完全消失了,但你起初是正确的:S – Lotse
哦,你还有一件事,你看我在哪里注释performLogin。这个方法也在LoginActivity中,我试图在我的Java类中使用它。我怎样才能做到这一点? – Lotse