我有一项活动,允许用户选择联系人,然后返回联系人号码并在EditText中输入。
现在的问题是,如果用户在选择联系人之前输入一个号码,那么当活动恢复时,该号码将会消失。
我知道我可以使用捆绑包来保存UI的状态。唯一的问题是在用户输入EditText中的数字后,我希望在结果从联系人选择器传回时自动在数字末尾添加逗号。
这是我到目前为止所拥有的......
EditText numbers = null;
numbers = (EditText)findViewById(R.id.phoneNumbers);
@Override
protected void onRestoreInstanceState(Bundle outState){
super.onResume();
//opening my database
mDbHelper.open();
setRowIdFromIntent();
//populating some fields
populateField();
这是我的onSavedInstanceState()...
@Override
protected void onSaveInstanceState(Bundle outState){
super.onSaveInstanceState(outState);
if(mRowId != null){
//Here just keeping a reference of a db ID i use
outState.putLong(DbAdapter.KEY_ROWID, mRowId);
}
如何将编辑文本保存到包中并在末尾添加逗号? 还有可能知道用户何时输入10位数并自动在末尾添加(,)逗号?
编辑:
这是我设法提出的但它无法正常工作。
@Override
protected void onSaveInstanceState(Bundle outState){
super.onSaveInstanceState(outState);
outState.putString("number", numbers.getText().toString().trim());
}
然后在onRestore()
@Override
protected void onRestoreInstanceState(Bundle outState){
super.onResume();
mDbHelper.open();
if(currentNumber != null){
currentNumber = outState.getString("number").toString() + ",;
}
使用此代码,它只是在恢复活动时替换当前数字
答案 0 :(得分:1)
由于您要存储元素的DB id字段而不是数字,因此最后不能附加逗号。但是,您可以在简历结尾处添加一个逗号。
虽然我不知道你的populateField()方法是什么样的,但我猜你在某些时候将EditText设置为某个db条目的值。只需在最后添加一个逗号。
myEditText.setText(someVariable + ",");
答案 1 :(得分:1)
从第一眼看起来它看起来很简单。我假设您在setText(CharSequence text);
方法中使用onResume()
设置了文字。只需在保存的号码后添加";"
字符:
editText.setText(myString+";");
要知道用户何时添加了10位数字,您可以使用addTextChangedListener
设置TextWatcher
。在afterTextChanged()
方法中,您可以检查输入长度是否大于10个字符,只需在您的EdiText
附加逗号。