保存到捆绑包时如何将逗号附加到字符串末尾?

时间:2011-10-17 15:08:32

标签: android

我有一项活动,允许用户选择联系人,然后返回联系人号码并在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() + ",;
}

使用此代码,它只是在恢复活动时替换当前数字

2 个答案:

答案 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附加逗号。