6

簡単な質問があります。

いくつかの数字が表示された画面があります。数字の1つをクリックすると、編集テキストの最後に数字が追加されます。

input.append(number);

また、戻るボタンがあります。ユーザーがこのボタンをクリックすると、最後の文字が削除されます。

現在、私は次のものを持っています:

Editable currentText = input.getText();

if (currentText.length() > 0) {
    currentText.delete(currentText.length() - 1,
            currentText.length());
    input.setText(currentText);
}

これを行う簡単な方法はありますか?input.remove()の行に何かありますか?

4

2 に答える 2

12

これは古い質問だと思いますが、それでも有効です。自分でテキストをトリミングする場合、setText()を実行すると、カーソルが先頭にリセットされます。したがって、代わりに(njzk2で言及されているように)、偽の削除キーイベントを送信し、プラットフォームに処理させます...

//get a reference to both your backButton and editText field

EditText editText = (EditText) layout.findViewById(R.id.text);
ImageButton backButton = (ImageButton) layout.findViewById(R.id.back_button);

//then get a BaseInputConnection associated with the editText field

BaseInputConnection textFieldInputConnection = new BaseInputConnection(editText, true);

//then in the onClick listener for the backButton, send the fake delete key

backButton.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        textFieldInputConnection.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DEL));
    }
});
于 2014-05-27T15:25:18.640 に答える
9

これを試してみてください、

String str = yourEditText.getText().toString().trim();


   if(str.length()!=0){
    str  = str.substring( 0, str.length() - 1 ); 

    yourEditText.setText ( str );
}
于 2012-09-28T08:53:18.980 に答える