getSharedPrefernces return 仅在一个 activity 中为 null,在另一个上工作正常
getSharedPrefernces return null only in one activity which works fine on another
我正在使用以下代码保存共享首选项。
sharedpreferences = getSharedPreferences("MyPrefs", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedpreferences.edit();
editor.clear();
editor.putString("NIC",nic);
editor.putString("fName",fName);
editor.putString("mName",mName);
editor.putString("lName",lName);
editor.putString("aNo",aNo);
editor.putString("lane",aLane);
editor.putString("city",aCity);
editor.putString("contactNo",contactNo);
editor.putString("regDate",regDate);
editor.putString("cardNo",cardNo);
editor.putString("balance",balance);
editor.commit();
使用以下代码获取配置文件 activity 中的共享首选项并且工作正常。
private void getPrefs() {
SharedPreferences userDetails = Profile.this.getSharedPreferences("MyPrefs", Context.MODE_PRIVATE);
id = userDetails.getString("NIC", "");
f_Name = userDetails.getString("fName", "");
m_Name = userDetails.getString("mName", "");
l_Name = userDetails.getString("lName", "");
contact_no = userDetails.getString("contactNo", "");
a_No = userDetails.getString("aNo", "");
a_Lane = userDetails.getString("lane", "");
a_City = userDetails.getString("city", "");
card_No = userDetails.getString("cardNo", "");
reg_Date = userDetails.getString("regDate", "");
}
但是当我在另一个 activity 中使用相同的内容时,它 returns id 为 null。
private void getPrefs() {
SharedPreferences userDetails = Travel.this.getSharedPreferences("MyPrefs", Context.MODE_PRIVATE);
id = userDetails.getString("NIC", "");
}
mainfest.xml
<activity
android:name=".Profile"
android:configChanges="orientation|keyboardHidden|screenSize"
android:label="@string/app_name">
<intent-filter>
<action android:name="com.example.pavsaranga.scat.PROFILE" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
android:name=".Travel"
android:configChanges="orientation|keyboardHidden|screenSize"
android:label="@string/app_name">
<intent-filter>
<action android:name="com.example.pavsaranga.scat.TRAVEL" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
谁能帮我解决这个问题?
Travel的完整代码Activity
public class Travel extends AppCompatActivity {
TableLayout tl;
StringBuilder sb;
String id, result;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.travel);
tl = (TableLayout)findViewById(R.id.tlTravel);
getPrefs();
Thread t1 = new Thread(new Runnable() {
@Override
public void run() {
getResponse();
}
});
t1.start();
}
private void getPrefs() {
SharedPreferences userDetails = getApplicationContext().getSharedPreferences("MyPrefs", Context.MODE_PRIVATE);
id = userDetails.getString("NIC", "");
}}
将此或 Profile.this 更改为 getApplicationContext()
喜欢:
SharedPreferences userDetails = getApplicationContext()
.getSharedPreferences("MyPrefs", Context.MODE_PRIVATE);
我正在使用以下代码保存共享首选项。
sharedpreferences = getSharedPreferences("MyPrefs", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedpreferences.edit();
editor.clear();
editor.putString("NIC",nic);
editor.putString("fName",fName);
editor.putString("mName",mName);
editor.putString("lName",lName);
editor.putString("aNo",aNo);
editor.putString("lane",aLane);
editor.putString("city",aCity);
editor.putString("contactNo",contactNo);
editor.putString("regDate",regDate);
editor.putString("cardNo",cardNo);
editor.putString("balance",balance);
editor.commit();
使用以下代码获取配置文件 activity 中的共享首选项并且工作正常。
private void getPrefs() {
SharedPreferences userDetails = Profile.this.getSharedPreferences("MyPrefs", Context.MODE_PRIVATE);
id = userDetails.getString("NIC", "");
f_Name = userDetails.getString("fName", "");
m_Name = userDetails.getString("mName", "");
l_Name = userDetails.getString("lName", "");
contact_no = userDetails.getString("contactNo", "");
a_No = userDetails.getString("aNo", "");
a_Lane = userDetails.getString("lane", "");
a_City = userDetails.getString("city", "");
card_No = userDetails.getString("cardNo", "");
reg_Date = userDetails.getString("regDate", "");
}
但是当我在另一个 activity 中使用相同的内容时,它 returns id 为 null。
private void getPrefs() {
SharedPreferences userDetails = Travel.this.getSharedPreferences("MyPrefs", Context.MODE_PRIVATE);
id = userDetails.getString("NIC", "");
}
mainfest.xml
<activity
android:name=".Profile"
android:configChanges="orientation|keyboardHidden|screenSize"
android:label="@string/app_name">
<intent-filter>
<action android:name="com.example.pavsaranga.scat.PROFILE" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
android:name=".Travel"
android:configChanges="orientation|keyboardHidden|screenSize"
android:label="@string/app_name">
<intent-filter>
<action android:name="com.example.pavsaranga.scat.TRAVEL" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
谁能帮我解决这个问题? Travel的完整代码Activity
public class Travel extends AppCompatActivity {
TableLayout tl;
StringBuilder sb;
String id, result;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.travel);
tl = (TableLayout)findViewById(R.id.tlTravel);
getPrefs();
Thread t1 = new Thread(new Runnable() {
@Override
public void run() {
getResponse();
}
});
t1.start();
}
private void getPrefs() {
SharedPreferences userDetails = getApplicationContext().getSharedPreferences("MyPrefs", Context.MODE_PRIVATE);
id = userDetails.getString("NIC", "");
}}
将此或 Profile.this 更改为 getApplicationContext()
喜欢:
SharedPreferences userDetails = getApplicationContext()
.getSharedPreferences("MyPrefs", Context.MODE_PRIVATE);