簡體   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