I'm making a simple app, where there is one TextInput field and a button next to it.
The TextInput field loads #string/duration_time from strings.xml.
The button next to it will display a simple message ("hello" + the string duration_time). However, it will always display the original information from string duration_time.
How do I set up a TextChangedListener to update the string/duration_time to reflect the input from the user? How do I access the information from TextInput and use it? Because as in the example below, under "public void afterTextChanged" I am trying to save the information, but I don't know where it's stored.
Kind regards
button2.addTextChangedListener(new TextWatcher() {
#Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
#Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
#Override
public void afterTextChanged(Editable s) {
String duration_input= WHAT_Do_I_Put_Here;
}
});
Suppose you are using editText and button as Android Wigets.
Now if you want to get the the text inside editText on click of button.It can be done like this
String textEdit = "";
button.setOnClickListener(->view{
textEdit = editText.getText().toString();
});
Now your textEdit will contain the text which you entered in your editText.
Related
I have EditText which is connected with TextWatcher I'm monitoring when user presses # letter. That will make a Listview appear with names of commentators on particular post. When user chooses one of the users from ListView, name is append to EditText and ListView is hidden.
But the problem is when user continues typing ListView will appear again because afterTextChanged(Editable s) monitors the whole inputted text which already contains letter #.
Is there a way to monitor only what user is actually typing not the whole inputed text? Or somehow escape last inputed word in TextWatcher? Or any other suggestions how to solve this.
I was researching but didn't find anything useful.
Thanks in advance
There can be many ways to achieve this. This is one of them. You can check weather your list is already filled or not.
final boolean isListSet = false;
public static final String textToFind = "#";
editText.addTextChangedListener(new TextWatcher() {
#Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
#Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
#Override
public void afterTextChanged(Editable s) {
if (!isListSet && s.toString().contains(textToFind)) {
// set your list here
isListSet = true;
}
if (!s.toString().contains(textToFind)) {
// remove your list
isListSet = false;
}
}
});
The basic concept is that I will have multiple buttons for example Button A, Button B, Button C etc. I also have a EditText field at the top of the screen.
What I want to do is if the button name or id matches what I have typed into the EditText field then it should click the button automatically.
I would provide the java file for this but it is very basic without anything written inside of it at the moment.
Could anyone kindly help me with the code I need to write in the main java file to match and link button names or id`s please
You have to use TextWatcher to get and compare text with button name.
yourEditText.addTextChangedListener(passwordWatcher);
private final TextWatcher passwordWatcher = new TextWatcher() {
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
public void afterTextChanged(Editable s) {
if(yourEditText.getText().toString().equals("button1")) {
button1.performClick();
}
}
};
I am working in an Android application.In my application there is a edit text. in that
edit text if user enters 12, it has to change dynamically as 12.00. which means it only
accept decimal values. if user enters as 12.3 then it should become 12.30.and if 12.35
then it should be 12.35 only. it will not allow user to enter more than two after dot.
Please help in this scenario?
Use a TextWatcher to handle dinamically the input, then inside the TextWatcher use something like DecimalFormat to change the text.
yourEditText.addTextChangedListener(new TextWatcher() {
#Override
public void onTextChanged(CharSequence s, int start, int before, int count) {}
#Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
#Override
public void afterTextChanged(Editable s) {
// do something here
DecimalFormat form = new DecimalFormat("0.00");
String FormattedText=form.format(s.toString());
}
});
In Edittext Android :
How to implement this feature if user entered any valid numeric value it should get displayed in the form of decimal value.
e.g If user enters 4 then it should get displayed as 4.000 instead of only 4.
Also can be done using DONE button click handler of virtual keypad.
You can use like this
EditText et = (EditText)findViewById(R.id.myEditText);
et.addTextChangedListener(new TextWatcher(){
public void afterTextChanged(Editable s) {}
public void beforeTextChanged(CharSequence s, int start, int count, int after){}
public void onTextChanged(CharSequence s, int start, int before, int count){
//Check your et value and set it back.
// Retrieve 4.. set it to 4.000
}
});
Have you tried this on your XML?
android:inputType="numberDecimal"
Parse the string you are getting from editext to double or float in the click of a done button or wherever you want.
I have an application where user inputs text into EditText field. After user clicks OK (in keyboard input mode), a correct value is in the EditText (lets say "Smile").
if (answers.get(counter).getText().equals(opponentAnswers.get(counter)))
But this if statement fails, because the same EditText has the values that were suggested by T9 option, when user was inputing his answer (for example values of EditText would be "Smile Smiling Smiled"), while it should only have a value "Smile".
Any ideas how to solve this issue?
That's really weird. These are kind of guesses, but this is what I'd try next if I were you:
A. Instead of doing an equals against getText(), try doing a toString on getText(), so:
if (answers.get(counter).getText().toString().equals(opponentAnswers.get(counter)))
B. If that doesn't work then you could try adding a TextWatcher using addTextChangedListener on the EditText, and getting the value from that. Calling toString() on the editable returned in afterTextChanged might give you the value you want.
private class SearchTextWatcher implements TextWatcher {
#Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
#Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
}
#Override
public void afterTextChanged(Editable s) {
//Get the text the user sees
String textShownToUser = s.toString();
}
}
Hope this helps! Best of luck!