注意:“null”实际上是我设置为默认值的字符串
我在SharedPreference中保存的代码
billText = (EditText) findViewById(R.id.billNumber);
tableNumberText = (EditText) findViewById(R.id.tableNumber);
amountText = (EditText) findViewById(R.id.amount);
remarksText = (EditText) findViewById(R.id.remarks);
submit = (Button) findViewById(R.id.submitButton);
SharedPreferences sharedPreferences = getSharedPreferences(SharedPreference.Form.FORM, MODE_PRIVATE);
final SharedPreferences.Editor editor = sharedPreferences.edit();
submit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (tableNumberText.getText().toString() != null || tableNumberText.getText().toString() != "") {
editor.putString(SharedPreference.Form.TABLE_NUMBER, tableNumberText.getText().toString());
Toast.makeText(FormActivity.this, "ABC", Toast.LENGTH_LONG).show();
}
if (amountText.getText().toString() != null || amountText.getText().toString() != "") {
editor.putString(SharedPreference.Form.AMOUNT, amountText.getText().toString());
}
if (billText.getText().toString() != null || billText.getText().toString() != "") {
editor.putString(SharedPreference.Form.BILL_NUMBER, billText.getText().toString());
}
if (remarksText.getText().toString() != null || remarksText.getText().toString() != "") {
editor.putString(SharedPreference.Form.REMARKS, remarksText.getText().toString());
}
editor.commit();
startActivity(new Intent(getApplicationContext(), FeedbackActivity.class));
}
});
推送数据的代码
jsonObj.put("bill", sharedPreferences.getString(SharedPreference.Form.BILL_NUMBER, "null"));
jsonObj.put("table", sharedPreferences.getString(SharedPreference.Form.TABLE_NUMBER, "null"));
jsonObj.put("amount", sharedPreferences.getString(SharedPreference.Form.AMOUNT, "null"));
jsonObj.put("remarks", sharedPreferences.getString(SharedPreference.Form.REMARKS, "null"));
editor.clear();
editor.commit();
修改:
我打算做什么:通过SharedPreference持久保存数据。我首先通过Activity(第一个代码块)保存数据,然后将数据推送到后端。有四个文本字段(EditText
),我从中获取String
数据。
预期行为:当我使用方法
时 jsonObj.put("key", SharedPreference.getString(key, default-value)
我应该得到我在后端放置的Activity中保存的值。
结果:
在后端,而不是得到我输入的内容,我得到屏幕截图中显示的内容。
奇怪的部分:但是,正如您所看到的,所有四个字段的代码都相同,但代码相同(用户输入的数据有四个EditText
字段)三他们得到默认字符串,即"null"
和一个(金额)保持空白。
PS :在我运行的所有这些测试中,我从未将所有字段留空。
答案 0 :(得分:0)
测试EditText当前是否为空的正确方法是:
if(TextUtils.isEmpty(amountText.getText())) {...}