【问题标题】:How to append a comma to the end of strings when saving to a bundle?保存到包时如何在字符串末尾附加逗号?
【发布时间】:2011-10-17 15:08:32
【问题描述】:

我有一个允许用户选择联系人的活动,它会返回联系人号码并将其输入到 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() + ",;
}

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

【问题讨论】:

  • 您需要从 populateFields 和 setRowIdFromIntent 粘贴更多代码。也请稍微格式化一下你的代码

标签: android


【解决方案1】:

乍一看,它看起来很简单。我假设您在 onResume() 方法中使用 setText(CharSequence text); 设置文本。只需在您保存的号码后添加";" 字符:

   editText.setText(myString+";");

要知道用户何时添加了 10 位数字,您可以使用 addTextChangedListener 设置 TextWatcher。在 afterTextChanged() 方法中,您检查输入长度是否大于 10 个字符,然后将逗号附加到您的 EdiText

【讨论】:

  • 所以基本上就是这样,用户可以在编辑文本(电话号码)中输入一个数字,然后他们可以选择一个联系人添加到其中。因此,当他们单击选择联系人按钮并选择联系人时。返回号码。我想要做的是保留用户在选择联系人之前输入的号码,并在用户返回时将它们添加到编辑文本中。假设用户输入一个号码并选择一个联系人,然后选择另一个。我希望所有这些号码在用户返回时仍然可用。
  • 并设置为编辑文本。我知道我可能会让这变得比现在更复杂。
【解决方案2】:

由于您存储的是元素的 DB id 字段而不是数字,因此您不能在末尾附加逗号。但是,您可以在简历的末尾添加一个逗号。

虽然我不知道您的 populateField() 方法是什么样的,但我猜您有时会将 EditText 设置为某个 db 条目的值。只需在末尾添加一个逗号即可。

myEditText.setText(someVariable + ",");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-30
    • 2022-12-11
    • 2014-03-06
    • 2020-08-19
    • 2017-09-29
    • 2012-05-20
    相关资源
    最近更新 更多