在Android中将字符串[]保存为单个字符串
我试图将我的4个字符串数组转换成一个由“,”分隔的字符串。当我调试时,似乎可以很容易地保存信息;但是,当我尝试获取字符串时,它不会检索数据。我正试图确定原因:在Android中将字符串[]保存为单个字符串,android,sharedpreferences,Android,Sharedpreferences,我试图将我的4个字符串数组转换成一个由“,”分隔的字符串。当我调试时,似乎可以很容易地保存信息;但是,当我尝试获取字符串时,它不会检索数据。我正试图确定原因: String[] debtName = new String[10]; String[] debtAmount = new String[10]; String[] debtRate = new String[10]; String[] debtPayment = new String[10];
String[] debtName = new String[10];
String[] debtAmount = new String[10];
String[] debtRate = new String[10];
String[] debtPayment = new String[10];
//Load Data
SharedPreferences sharedPref= getSharedPreferences("chaosdatasnowball", 0);
debtName = sharedPref.getString("debtNames", null).split(",");
//End Load
Bundle extras = getIntent().getExtras();
int flipper = 0;
for(int i=0;i<debtName.length;i++)
{
if(debtName[i].equals(null) && !extras.equals(null) && flipper!=1)
{
debtName[i] = extras.getString("newDebtName");
debtAmount[i] = extras.getString("newDebtAmount");
debtRate[i] = extras.getString("newDebtRate");
debtPayment[i] = extras.getString("newDebtPayment");
flipper = 1;
}
}
更正:在调试之外运行时,这会在以下情况下产生nullpointer异常:
SharedPreferences sharedPref= getSharedPreferences("chaosdatasnowball", 0);
debtName = sharedPref.getString("debtNames", null).split(","); <---this line
这一行的问题在于:
debtName = sharedPref.getString("debtNames", null).split(",");
键debtNames
可能不存在。因此返回null
当您第一次运行应用程序并且尚未将任何内容保存到共享首选项时,将发生这种情况
添加null检查并处理此情况。例如,如果返回null,则显示默认值,否则显示从SharedReference读取的值。我已屈服于一个明显的事实,即没有有效的方法来执行此操作,因此我现在已将40个变量硬编码到应用程序中。如果有人提出任何有用的东西,请随时发布,我会经常检查。“它无法检索数据”你怎么知道?它会崩溃吗?你看到了什么输出?那么什么意思是不检索数据?发布debtName的输出。当我调试时,我这样做时,它不会显示它的值。。如果我将getString更改为getString(debtNames,“debtNames”),它会输出“debtNames”,为什么?在调用此方法之前,确实要将值保存到共享首选项吗?我看不到你的代码流程。。
EditText editDebtName = (EditText) findViewById(R.id.dispDebtName);
debtName = editDebtName.getText().toString();
EditText editDebtAmount = (EditText) findViewById(R.id.dispDebtAmount);
String debtAmountStr = editDebtAmount.getText().toString();
EditText editDebtRate = (EditText) findViewById(R.id.dispDebtRate);
String debtRateStr = editDebtRate.getText().toString();
EditText editDebtPayment = (EditText) findViewById(R.id.dispDebtPayment);
String debtPaymentStr = editDebtPayment.getText().toString();
Intent i = new Intent(this, DebtList.class);
i.putExtra("newDebtName", debtName);
i.putExtra("newDebtAmount", debtAmountStr);
i.putExtra("newDebtRate", debtRateStr);
i.putExtra("newDebtPayment", debtPaymentStr);
startActivity(i);
debtName = sharedPref.getString("debtNames", null).split(",");