簡體   English   中英

我的第二個主動狀態的共享首選項值為空

[英]Shared preference value is null in my second acivity

我需要在第二個活動中使用OnReceivedDataMethod內部的字符串數據,以便將這些字符串數據保存到文件中,但目前我的文件中包含空數據

 SharedPreferences sp;
UsbSerialInterface.UsbReadCallback mCallback = new UsbSerialInterface.UsbReadCallback() { //Defining a Callback which triggers whenever data is read.
    @Override
    public void onReceivedData(byte[] arg0) {

        try {
            data = new String(arg0, "UTF-8");
            data.concat("/n");
             sp = getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);
            SharedPreferences.Editor et = sp.edit();
            et.putString("key",data);
            et.apply();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
    }
};

在第二活動中

    protected void onCreate(Bundle savedInstanceState) {
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
    desiredPreference =  sharedPreferences.getString("key","data");
    Toast.makeText(this,"spdata"+desiredPreference,Toast.LENGTH_LONG).show();

}

值是空的,因為您使用了PreferenceManager.getDefaultSharedPreferences(this) ,它返回具有此活動名稱的首選項,並且與您在第一個活動中使用的其他首選項不同。 取而代之的是,您應該以與第一次活動中相同的方式來調用您的首選項。

SharedPreferences prefs = getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);
String desiredPreference =  sharedPreferences.getString("key","data");

要了解有關差異的更多信息,請查看文檔答案。

做這樣的事情

用於存儲

    SharedPreferences sharedPref = this.getPreferences(Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = sharedPref.edit();
    editor.putString("key", data);
    editor.commit();

檢索

  SharedPreferences sharedPref = this.getPreferences(Context.MODE_PRIVATE);
  String checkDate = sharedPref.getString("key","");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM