繁体   English   中英

共享首选项有问题吗? Android Java

[英]Shared Preferences Issue? Android Java

嗨,我已经使用共享首选项将字符串存储在“已验证”中。 在主要活动上,我只需要能够获取字符串,它将在if语句中使用。 在经过验证的活动中,我必须能够在editText中输入一个值,并且它将永久存储该值(即使在关闭应用程序时也是如此),直到删除该应用程序为止。 这是我的代码,它当前不保存永久字符串。 我认为这可能与OnClickListner有关? 但我不确定。

主要活动

public class MainActivity extends Activity {



    public static final String Verified = "";




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

SharedPreferences settings = getSharedPreferences(Verified, 0);
String value = settings.getString("key","");


    if (MobileVerified.equals("")){

...

经过验证的课程

public void onCreate(Bundle savedInstanceState)

     {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.verified);

        Button VerifyCompleteButton = (Button) findViewById(R.id.VerifyCompleteButton);

        VerifyCompleteButton.setOnClickListener(new View.OnClickListener()

        {
           public void onClick(View view) 
           {    

             String NumberString;
             String Verified;

             Bundle bundle = getIntent().getExtras();

             NumberString = bundle.getString("NumberString");
             Verified = bundle.getString("Verified");



             //set String Verified permenantly

            SharedPreferences settings = getSharedPreferences(Verified, 0);
            SharedPreferences.Editor editor = settings.edit();
            editor.putString("key", NumberString);
            editor.commit();


           } 



           });


 }

对于崩溃,您应该提供stacktrace,但至少这是显而易见的:

SharedPreferences settings = getSharedPreferences(Verified, 0);

在成员变量初始化阶段,您将Activity用作Context为时过早。 getSharedPreferences()和以下getValue()调用移至onCreate()

之后,请确保在两个地方都将相同的首选项文件名传递给getSharedPreferences() getSharedPreferences(Verified, ...)似乎不是您所需要的,而是使用类似getSharedPreferences("verified", ...)

初始化SharedPreferences对象内部onCreate()之前代替onCreate()如下面的方法...

SharedPreferences settings;

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

   settings = PreferenceManager.getDefaultSharedPreferences(this);
   String value = settings.getString("key","");
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM