【问题标题】:Shared Preference Method Call From Activity to Java Class从 Activity 到 Java 类的共享首选项方法调用
【发布时间】:2016-10-12 04:24:38
【问题描述】:

所以我目前在 SharedPreferences 中的上下文中遇到问题,其中显示 LoginActivity.this。这是我的 device.java 类,而 LoginActivity 是我要从中调用此方法的 Activity。那么它会像 Device.This 还是类似的东西?

方法:

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

【问题讨论】:

    标签: variables android-studio android-activity sharedpreferences mobile-application


    【解决方案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 类之外的上下文对象时,这是我常用的方法。希望对您有所帮助!

    【讨论】:

    • 您只需将activity = this; 放在onCreate 中的某个位置。我通常把它放在类的开头,因为它确保 getActivity() 在任何情况下都返回一个对象。
    • 干杯工作得很好!是的,我完全空白,但一开始你是对的:S
    • 哦,还有一件事,你看我在哪里注释掉了 performLogin。此方法也在 LoginActivity 中,我正在尝试在我的 Java 类中使用它。我怎样才能做到这一点?
    • 如果 performLogin() 就像这里stackoverflow.com/questions/37696925/… 你不能,因为它是一个私有方法,不能从原始类之外的任何地方访问。您需要更改访问级别,然后只需使用MyActivity.getActivity().performLogin(username, password, ipAdress) 或将方法移至您的其他类
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-04
    相关资源
    最近更新 更多