1
我想點擊按鈕時出現一個對話框,並從該對話框讀取數據。在對話框中,我只有EditText數據。我的數據是數字。 這裏是我的代碼:無法接收來自按鈕偵聽器的數據
Button mSaveButton = (Button) findViewById(R.id.saveButton);
mSaveButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
AlertDialog.Builder mBuilder = new AlertDialog.Builder(ReportActivity.this);
View mView = getLayoutInflater().inflate(R.layout.dialog_for_percent , null);
EditText savingsDialog = (EditText) mView.findViewById(R.id.percentEditText);
mBuilder.setView(mView)
.setPositiveButton(R.string.done, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
Context context = getApplicationContext();
Toast.makeText(context, "Done", Toast.LENGTH_SHORT).show();
}
})
.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
dialog.dismiss();
}
});
AlertDialog dialog = mBuilder.create();
dialog.show();
//if (savingsDialog.getText().toString().length() > 0) { I tried this if, but I receive empty data
SharedPreferences savings = getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor = savings.edit();
editor.putString("percent", savingsDialog.getText().toString());
editor.commit();
updateSavingsView(Integer.parseInt(savingsDialog.getText().toString()));// here I want to put my data in method which update my TextView
//}
}
});
方法(如果你需要它)
public void updateSavingsView(int savings){
TextView savingsTextView = (TextView) findViewById(R.id.saverTextView);
savingsTextView.setText("Save " + savings + "% per month");
TextView monthlySavings = (TextView) findViewById(R.id.savingsMoney);
if(savings == 0 || Integer.parseInt(income.getText().toString()) == 0) {
monthlySavings.setText("0");
}
else{
monthlySavings.setText(Integer.toString((Integer.parseInt(income.getText().toString()) * savings)/100));
}
所以問題是,當我沒有if語句運行程序我有一個錯誤java.lang.NumberFormatException:對於輸入字符串:「」。這是因爲它讀取空字符串並且想要解析它。然後我添加if語句來避免這個問題,但它不起作用。 而我的問題是。我如何重寫這個監聽器來避免這些問題並存儲正確的數據?
我不能怎麼一回事,因爲我的EditText savingsDialog是外內,它給了我,我應該聲明它最終 – Valgaal
然後聲明爲final ..沒有問題的錯誤。做它 –
是的,它的工作原理。我認爲,這將是不是那麼明顯的答案。我避免決賽..但這只是一種方式 – Valgaal