4

I have override this method in MyEditText class:

@Override
public Editable getText() {
    Editable s = (Editable) super.getText();
    s.toString().replace("$", "").trim();
    return s;
}

MainActivity class is:

public class MainActivity extends Activity implements OnClickListener {
MyEditText myEditText;
Button btn;
TextView tv;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.try_layout);

    myEditText = new MyEditText(this);

    btn = (Button) findViewById(R.id.btn);
    tv = (TextView) findViewById(R.id.tv);
    btn.setOnClickListener(this);

}
@Override
public void onClick(View v) {

    tv.setText(myEditText.getText().toString());

   }

}

When i entered some values in edittext then click on btn nothing text is get from edittext why.

3 Answers3

6

Why you do not assign back to 's' before return?

s = s.toString().replace("$", "").trim();
Trần Đức Tâm
  • 4,037
  • 3
  • 30
  • 58
  • s-> Editable and s.toString().replace("$", "").trim() return string – Neetu Shrivastava May 30 '14 at 08:40
  • My mind that your problem is: > s.toString().replace("$", "").trim() Do not assign value to s so it's a death code. – Trần Đức Tâm May 30 '14 at 08:43
  • You can try to return String 'return s.toString().replace("$", "").trim();' after cast String to Editable by this solution [here](http://stackoverflow.com/questions/5702949/android-cannot-convert-from-string-to-editable). But remember that it do not include your EditText style any more. – Trần Đức Tâm May 30 '14 at 09:14
2

Change this

   @Override
    public Editable getText() {
        Editable s = (Editable) super.getText();
        s.toString().replace("$", "").trim();
        return s;
    }

to

 @Override
    public Editable getText() {
        Editable s = (Editable) super.getText();
        return new SpannableStringBuilder(s.toString().replace("$", "").trim());
    }
Giru Bhai
  • 14,370
  • 5
  • 46
  • 74
2
Editable s = (Editable) super.getText();
s.toString().replace("$", "").trim();
return s;

I am afraid that you got some issuse here, because the replace return a new string, you can try return (s.toString().replace("$", "").trim(); instead of

kidnan1991
  • 366
  • 2
  • 12