2014-11-17 1 views
-2

Я хочу создать условие if else для setOnClickListener. Как я должен это делать? приведенный ниже код работает правильно. его просто, что я хотел бы сделать условие. если пользователь вводит цифры более 10000, я хочу, чтобы приложение вызывало всплывающее предупреждение, чтобы сообщить пользователю изменить номер, чтобы он не превышал 10000. Пожалуйста, помогите мне в том, как это сделать. ниже приведен код в java.как сделать if и else условие в android для setOnClickListener?

package com.example.mobilecatering; 

public class mcpakej1 extends Activity { 

    private EditText phone; 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.mcpakej1); 

     phone = (EditText) findViewById(R.id.guest); 
     phone.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Toast msg = Toast.makeText(getBaseContext(), "Maximum 10000 only.", Toast.LENGTH_LONG); 
       msg.show(); 
      } 
     }); 

     public void goReceipt(View v) { 
      Intent intent = new Intent(v.getContext(), doReceipt.class); 
      intent.putExtra("phone", phone.getText().toString()); 
      startActivityForResult(intent,0); 
     } 
    } 
} 

это код xml.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" > 

    <ScrollView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" > 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:orientation="vertical" > 

      <TextView 
       android:id="@+id/textView50" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:textStyle="bold" 
       android:textAppearance="?android:attr/textAppearanceMedium" 
       android:text="Number of guest(s)"/> 

      <EditText 
       android:id="@+id/guest" 
       android:layout_width="fill_parent" 
       android:layout_height="50dp" 
       android:inputType="number" 
       android:textStyle="bold" 
       android:textAppearance="?android:attr/textAppearanceMedium" 
       android:hint="Enter number 1 to 10 000 only." /> 
     </LinearLayout> 


    </ScrollView> 


<ImageButton 
    android:id="@+id/gobutton" 
    android:layout_width="60dp" 
    android:layout_height="40dp" 
    android:layout_alignTop="@+id/homebtn" 
    android:layout_toRightOf="@+id/homebtn" 
    android:background="@drawable/gobutton" 
    android:onClick="goReceipt" /> 

</RelativeLayout> 

Пользователь должен ввести номер в EditText. после этого, когда они нажимают на GoButton для перехода на следующую страницу. если они вводят номер более 10000, и после этого они нажимают на gobutton, приложение должно сделать предупреждающее сообщение для пользователя и вернуться к edittext после того, как пользователь нажмет ok. как я могу это сделать? Помоги мне, пожалуйста.

любая помощь приветствуется .... :)

ответ

0
public void goReceipt(View v) 
{ 
    try { 
      int number = Integer.parseInt(((EditText) findViewById(R.id.guest)).getText().toString()); 
      if (number > 50 && number <= 10000) { 
       Intent intent = new Intent(v.getContext(), doReceipt.class); 
       intent.putExtra("phone", phone.getText().toString()); 
       startActivityForResult(intent,0); 
      } else { 
       Toast msg = Toast.makeText(getBaseContext(), "Maximum 10000 only.", 
         Toast.LENGTH_LONG); 
       msg.show(); 
      } 
    } catch (Exception ex) {} 

} 
+0

что я должен положить в состояние улова? –

+0

@CikHusna - все, что вы хотите. Вы можете оставить его пустым или показать тост: Toast.makeText (getBaseContext(), «Вы ввели NOT number», Toast.LENGTH_LONG) .show(); –

+0

Ошибка parseInt. он сказал, что метод parseInt (String) в типе Integer не применим для аргументов (редактируемый) –

2

вы должны сделать что-то вроде этого

phone.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      try { 
       if (Integer.ParseInt(phone.getText().toString()) > 10000) { 
        Toast msg = Toast.makeText(getBaseContext(), "Maximum 10000 only.", 
         Toast.LENGTH_LONG); 
        msg.show(); 
       } else { 
        // do something else 
       } 
      } catch(Exception e) { 
       // given text is not number 
      } 
     } 
    }); 
+2

Окружать IF/ELSE с помощью 'try ... catch block', поскольку это может генерировать исключение. Также добавьте 'trim()' в строку incase любого дополнительного пространства. Также рекомендуется использовать «Двойной», поскольку ожидаемое значение - это валюта – codePG

+4

@codePG, что совет (частично) ** неправильный **. Всегда нужно стремиться к тому, чтобы ограничить области блоков try-catch. При «лучшем» я бы окружал вызов Toast.makeText() с помощью блока try ... catch. – Vogel612

+0

Что я должен заявить в состоянии улова? –

0

здесь является решение:

String str = phone.getText().toString(); 
if(Integer.parseInt(str) > 10000) { 
    Toast msg = Toast.makeText(getBaseContext(), "Maximum 10000 only.", 
       Toast.LENGTH_LONG); 
    msg.show(); 
} else { 
    //your code 
} 
+0

оператор if определит число справа? если введено более 10000, приложение неожиданно остановится или возобновит, чтобы пользователь снова запустил номер? –

+0

Добавить фрагмент в функцию onClick (View v) внутри прослушивателя кнопок. Тост будет отображаться всегда, когда пользователь вводит номер более 10000 и нажимает кнопку. После ввода правильного номера и нажатия кнопки // ваш код будет выполнен. – Forin

0

Делай так ,

btnFinalAns.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
if (edtFinalPolishRate.getText().toString().length() <= 0) { 
        a1.setMessage("FinalPolishRate is Empty"); 
        edtFinalPolishRate.requestFocus(); 
}else{ 
a1.setMessage("MarketRate is Empty"); 
        edtMarketRate.requestFocus(); 
}}}; 
+0

может объяснить, что такое a1? –

+0

его объект alertdialog ... –

Смежные вопросы