2017-04-01 20 views
0

我需要使用字符串數據裏面OnReceivedDataMethod到第二個活動,以這些字符串數據保存到文件中,但目前我有空數據到我的文件共享優先值是我的第二個acivity空

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

} 

回答

3

值爲null,因爲你使用PreferenceManager.getDefaultSharedPreferences(this)與本次活動的名稱返回偏好,這是從你在你的第一個活動中使用的其他偏好不同。相反,您應該按照您在第一次活動中所稱的方式調用您的偏好。

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

要更多地瞭解你可以檢查documentationthis答案的差異。

+0

感謝您對我來說這工作 –

0

做這樣的事情,

對於存儲

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

爲Retriving

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