Строка не преобразуется в целое число-приложение выходит из строя.
Итак, у меня есть editText, а inputtype - это "number", я пытаюсь использовать для него оператор if, например if (edtTxt > 20000 ) { // do this}, но он каждый раз вылетает, есть идеи, в чем проблема? пожалуйста, обратите внимание, что я посылаю это целое число через несколько действий.
Что я уже пробовал:
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_fre_quency_manual); btnEnter = (Button) findViewById(R.id.enter); btnClear = (Button) findViewById(R.id.clear); edtTxt = (EditText) findViewById(R.id.edtText); btnClear.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { edtTxt.setText(""); } }); btnEnter.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { AlertDialog.Builder builder = new AlertDialog.Builder(FreQuencyManual.this); builder.setTitle(" Confirmation "); builder.setMessage("Frequency scale : " + " " + edtTxt.getText().toString() + " " +"Are you sure?"); builder.setPositiveButton(" Yes ", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { if (edtTxt.getText().toString().matches("")){ Toast.makeText(getApplicationContext(), " Type the frequency scale first! ", Toast.LENGTH_SHORT).show(); }else { Intent intentMove2 = new Intent(FreQuencyManual.this,Correction.class); intentMove2.putExtra("msger",edtTxt.getText().toString()); startActivity(intentMove2); } } }); builder.setNegativeButton(" No ", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { dialogInterface.cancel(); } }); AlertDialog dialog = builder.create(); dialog.show(); } }); }}
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_correction); gifImageView = (GifImageView) findViewById(R.id.gifBruhhhh); txtInsert = (TextView) findViewById(R.id.checkInsertedFrequency); Bundle bundle = getIntent().getExtras(); String data = bundle.getString("msger"); int nurse = Integer.parseInt(data); if (nurse<=20000 && nurse>=0){ Intent intent = new Intent(Correction.this,LoadingOld.class); startActivity(intent); }else { Intent intent2 = new Intent(Correction.this,FreQuencyManual.class); startActivity(intent2); } } }
Richard MacCutchan
Вам нужно проверить свою строку, прежде чем пытаться преобразовать ее в целое число, или использовать блок try/catch для перехвата строк, которые не являются числами.
elia93
Спасибо за ответ, есть идеи, как я могу проверить строку или окружить ее try catch в моем коде? я вроде как Новичок :D!
Richard MacCutchan
Вы проверяете одним из двух методов.
1. Используйте один из методов String class | разработчики Android[^] чтобы проверить, что он содержит только цифры.
2. Поймать любые ошибки в конструкции try/catch блок подхватить какую-нибудь NumberFormatException | Разработчики Android[^] как описано в Integer / Разработчики Android[^].