I have problem with edit text.I want if edit text are six characters go to next actitvity. I write this code but if write six characters don't go next activity.
this my code
smsCode.addTextChangedListener(new TextWatcher() {
#Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
if (s.toString().trim().length()== 6){
Intent intent = new Intent(SmsCodeActivity.this,ScanQrCodeActivity.class);
startActivity(intent);
}
}
#Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
#Override
public void afterTextChanged(Editable s) {
}
});
smsCode.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) {
if(smsCode.getText().toString().trim().length()== 6){
Intent intent = new Intent(SmsCodeActivity.this,ScanQrCodeActivity.class);
startActivity(intent);
}
}
#Override
public void afterTextChanged(Editable s) {
}
});
Try doing your work in onTextChanged
#Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (smsCode.getText().toString().trim().length()== 6){
Intent intent = new Intent(SmsCodeActivity.this,ScanQrCodeActivity.class);
startActivity(intent);
}
}
Related
I am designing a smart shopping cart and using blutooth scanner
It sends data like a numbers or texts
How can I make these texts work and interact but invisible to the user?
i do this But it is not practical
private TextWatcher enter = 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) {
//QRsmartCartTvtc
if(pass.getText().toString().trim().equals("QRsmartCartTvtc")){
Intent intent = new Intent(log_page.this,Casher.class);
startActivity(intent);
}
}
#Override
public void afterTextChanged(Editable s) {
if(pass.getText().toString().trim().equals("QRsmartCartTvtc")){
Intent intent = new Intent(log_page.this,MainActivity.class);
startActivity(intent);
}
else {
}
}
};
I have two editTexts. I want to test every time if the text has been changed and if it's the case I want to change the text of the second one too.
Here is what I've done :
TextWatcher fieldValidatorTextWatcherElec = new TextWatcher() {
#Override
public void afterTextChanged(Editable s) {
if (filterLongEnough1()) {
et_electricite_€.setText(String.valueOf(new BigDecimal(Double.parseDouble(et_electricite.getText().toString())*tarif).setScale(2, RoundingMode.HALF_UP).doubleValue()));
}
}
#Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
#Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
private boolean filterLongEnough1() {
return et_electricite.getText().toString().trim().length() > 0;
}
};
et_electricite.addTextChangedListener(fieldValidatorTextWatcherElec);
TextWatcher fieldValidatorTextWatcherElecTarif = new TextWatcher() {
#Override
public void afterTextChanged(Editable s) {
if (filterLongEnough()) {
et_electricite.setText(String.valueOf(new BigDecimal(Double.parseDouble(et_electricite_€.getText().toString())/tarif).setScale(2, RoundingMode.HALF_UP).doubleValue()));
}
}
#Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
#Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
private boolean filterLongEnough() {
return et_electricite_€.getText().toString().trim().length() > 0;
}
};
et_electricite_€.addTextChangedListener(fieldValidatorTextWatcherElecTarif);
The problem is: When I click for the first time it changes; when I try to do the same thing with the second editText the application doesn't move and after that, it crashes. Here's the errorlog:
E/JavaBinder: !!! FAILED BINDER TRANSACTION !!! (parcel size = 2057252)
E/MQSEventManagerDelegate: reportJEEvent error happened:android.os.TransactionTooLargeException: data parcel size 2057252 bytes
you can add an edit text listener. Put you logic on afterTextChanged
EditText answer = new EditText(this);
//second, we create the TextWatcher
TextWatcher textWatcher = new TextWatcher() {
#Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
#Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
#Override
public void afterTextChanged(Editable editable) {
//here, after we introduced something in the EditText we get the string from it
String answerString = answer.getText().toString();
//and now we make a Toast
//modify "yourActivity.this" with your activity name .this
Toast.makeText(yourActivity.this,"The string from EditText is: "+answerString,0).show();
}
};
//third, we must add the textWatcher to our EditText
answer.addTextChangedListener(textWatcher);
I want to use the cursor position to do something, so write this code:
input =(EditText)findViewById(R.id.Input_EditText);
input.addTextChangedListener(new TextWatcher()
{
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
public void afterTextChanged(Editable s)
{
int index = input.getSelectionEnd();
if(index==0)
{
//do nothing
}
else
{
Toast.makeText(MainActivity.this, Integer.toString(index), Toast.LENGTH_SHORT).show();
}
}
});
But if you press the newline key, then press the Delete key, then the program will crash
Will the problem is where?
I have a problem with my code, it's crashing for me when I have more than 1 textChangeListener.
I think that the problem is with using "new TextWatcher" more than once but I don't know what to change it to.
I'm only starting to learn java and app development so the code and variables are a bit messy.
the code:
editMiles.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) {
strMiles = 0 + editMiles.getText().toString();
intMiles = Integer.parseInt(strMiles);
editKnots.setText("" + intMiles * 1.15078);
editKilometers.setText("" + intMiles * 1.852);
}
#Override
public void afterTextChanged(Editable s) {
}
});
editBeaufort.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) {
strBeaufort = 0 + editBeaufort.getText().toString();
intBeaufort = Integer.parseInt(strBeaufort);
editKnots.setText("");
editKilometers.setText("");
editMiles.setText("");
}
#Override
public void afterTextChanged(Editable s) {
}
});
}
you have to get the input(CharSequence s) from your EditText's onTextChanged paramenter.so your code will be..
editMiles.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) {
strMiles = s.toString().trim();
intMiles = Integer.parseInt(strMiles);
editKnots.setText("" + intMiles * 1.15078);
editKilometers.setText("" + intMiles * 1.852);
}
#Override
public void afterTextChanged(Editable s) {
}
});
editBeaufort.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) {
strBeaufort = s.toString().trim();
intBeaufort = Integer.parseInt(strBeaufort);
editKnots.setText("");
editKilometers.setText("");
editMiles.setText("");
}
#Override
public void afterTextChanged(Editable s) {
}
});
}
i hope it will work for you
you have to give the correct input for your calculation, if you want to input int, you have to parse string to int, or if you want to input as double, parse string to double and throw for exception
I'm new to Android programming. While making a program I was looking for the program to auto fill the subtraction result of two EditText widgets in third EditText, without any button. Please help me to find the solution.
int firstvalue=FirstText.getText.Tostring();
int secondvalue=SecondText.getText.Tostring();
int Answer=firstvalue - secondvalue;
thirdvalue.setText(Answer);
Hope it works. If any Problem occour tell me
You can use OnEditorAction Listener Method to edit Text and do what you want when the focus change
editText2.setOnEditorActionListener(new EditText.OnEditorActionListener() {
#Override
public boolean onEditorAction(EditText v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_DONE) {
//do here your stuff f
int value1=Integer.valueOf(edittext1.getText().Tostring());
int value2=Integer.valueOf(edittext2.getText().Tostring());
int value3=value1 - value2;
thirdvalue.setText(String.valueOf(value3));
return true;
}
return false;
} });
EditText e1=(EditText) findViewById(R.id.editText1);
EditText e2=(EditText) findViewById(R.id.editText2);
EditText e3=(EditText) findViewById(R.id.editText3);
e2.addTextChangedListener(new TextWatcher() {
public void onTextChanged(CharSequence s, int start, int before,
int count) {
if(!s.equals("") )
{
float a= Float.parseFloat(e1.getText().toString());
float b= Float.parseFloat(e2.getText().toString());
float c=a-b;
e3.setText(String.valueOf(c);
}
}
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
public void afterTextChanged(Editable s) {
}
});
Ofcourse I assume You'll do all the error handling. but this code will only if both fields are filled!.
Field1 = (EditText)findViewById(R.id.field1);
Field2 = (EditText)findViewById(R.id.field2);
Field3 = (EditText)findViewById(R.id.field3);
Field1.addTextChangedListener(new TextWatcher() {
#Override
public void afterTextChanged(Editable s) {}
#Override
public void beforeTextChanged(CharSequence s, int start,
int count, int after) {
}
#Override
public void onTextChanged(CharSequence s, int start,
int before, int count) {
if(s.length() != 0 && Field2.getText().length() != 0)
Field3.setText(""+(Integer.parseInt(s.toString()) - Integer.parseInt(Field2.getText().toString())));
}
});
Field2.addTextChangedListener(new TextWatcher() {
#Override
public void afterTextChanged(Editable s) {}
#Override
public void beforeTextChanged(CharSequence s, int start,
int count, int after) {
}
#Override
public void onTextChanged(CharSequence s, int start,
int before, int count) {
if(s.length() != 0 && Field1.getText().length() != 0)
Field3.setText(""+( Integer.parseInt(Field1.getText().toString()) - Integer.parseInt(s.toString())));
}
});