当我在TextField中输入一个数字时,它会显示一些字母和数字,例如我会输入100,它会给我一个字母" d"我怎样才能解决这个问题 ?我有这个代码。
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int takeMoney = Integer.parseInt(txtEdit.getText().toString());
String filename = "moneySavings.txt";
int asd = takeMoney;
FileOutputStream outputStream;
try {
outputStream = openFileOutput(filename, Context.MODE_PRIVATE);
outputStream.write(asd);
outputStream.close();
savings.setText("File Created !");
} catch (Exception e) {
e.printStackTrace();
}
}
});
btn2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
FileInputStream fis;
final StringBuffer storedString = new StringBuffer();
try {
fis = openFileInput("moneySavings.txt");
DataInputStream dataIO = new DataInputStream(fis);
String strLine = null;
if((strLine = dataIO.readLine()) != null) {
storedString.append(strLine);
savings.setText(strLine);
}
dataIO.close();
fis.close();
}
catch (Exception e) {
e.printStackTrace();
}
}
});
解释我是什么导致了这个问题,我该如何解决它...谢谢:)
答案 0 :(得分:0)
100是d的ASCII value。您的字符串值的类型已转换为OutputStream
处的ASCII值。
您无法直接在OutputStream
中编写字符串。
尝试:
outputStream.write(txtEdit.getText().toString().getBytes());
要将输入限制为数字,您可以指定键盘。请参阅TextFields documentation。
Ex 1:
<EditText
android:id="@+id/numberInput"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="@string/number_hint"
android:inputType="number" />
Ex 2 - 电话拨号键盘:
<EditText
android:id="@+id/numberInput"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="@string/number_hint"
android:inputType="phone" />
答案 1 :(得分:0)
OutputStream.write(int)
正在将int
写为字节,因此,如果您写.write(100)
,稍后您将其视为string
,那么您将获得d
100
是d
的ASCII代码。如果您尝试101
,则会e
。
如果您想将100
保存为"100"
,请尝试:
How to write Strings to an OutputStream