2012-04-10 3 views
2

Я разрабатываю приложение, основанное на викторине, в том случае, если пользователь нажимает на любой из параметров, он должен иметь подходящие сообщения, такие как «ваши анны правильные», «ваши анты ошибочны». Что мне нужно - этоОтображение тостов

1. how to display that sort of messages ?or is it the only way to display such msgs ? 
2. If the user clicks wrong option the it should show the correct answer as well as the msg 

here is what i have done so far but its not working giving force close!!! 


public void onClick(View v) 
    { 
     // TODO Auto-generated method stub 
     switch (v.getId()) 
     { 
     case R.id.button1: 
      Log.d("ERR", v.getTag().toString()); 
      if (v.getTag().toString().equalsIgnoreCase("right")) 
      { 
       displayAnswer(); 

      } 
      else 
      { 
       errorAnswer(); 

      } 

      break; 
     case R.id.button2: 
      Log.d("ERR", v.getTag().toString()); 
      if (v.getTag().toString().equalsIgnoreCase("right")) 
      { 
       displayAnswer(); 
      } 
      else 
      { 
       errorAnswer(); 

      } 
      break; 

     case R.id.button3: 
      Log.d("ERR", v.getTag().toString()); 
      if (v.getTag().toString().equalsIgnoreCase("right")) 
      { 
       displayAnswer(); 
      } 
      else 
      { 
       errorAnswer(); 

      } 
      break; 

     case R.id.button4: 
      Log.d("ERR", v.getTag().toString()); 
      if (v.getTag().toString().equalsIgnoreCase("right")) 
      { 
       displayAnswer(); 
      } 
      else 
      { 
       errorAnswer(); 


      } 
      break; 

     case R.id.btn_next: 
//   lyt_ans.setVisibility(View.GONE); 
//   lyt_quest.setVisibility(View.VISIBLE); 
      prev = counter; 
      counter += 1; 

      if (counter >= SIZE) 
      { 
       Collections.shuffle(quizIndexList); 
       counter = 0; 
      } 
      getInfoFromDB(quizIndexList.get(counter)); 
      reLoad(); 

      break; 

     case R.id.btn_bck: 
       getInfoFromDB(quizIndexList.get(prev)); 
        reLoad(); 
//   counter --; 




     } 
    } 

    private void errorAnswer() 
    { 
     Toast toast = new Toast(getApplicationContext()); 
     toast.setDuration(SIZE); 
     toast.setGravity(Gravity.CENTER, 0, 0); 
     toast.setText("your answer is wrong"); 
     // TODO Auto-generated method stub 

    } 

    private void displayAnswer() { 

     // TODO Auto-generated method stub 
     lyt_quest = (LinearLayout) findViewById(R.id.lyt_quest); 
     lyt_ans = (LinearLayout) findViewById(R.id.lyt_ans); 
     lyt_quest.setVisibility(View.VISIBLE); 
     lyt_ans.setVisibility(View.VISIBLE); 
//  TextView txt1 = null; 
     Toast toast = new Toast(getApplicationContext()); 
     toast.setDuration(SIZE); 
     toast.setGravity(Gravity.CENTER, 0, 0); 
     toast.setText("Your answer is correct!!"); 
    } 

Любая помощь заметна.

+0

Где вы настройка тега вида V, то есть кнопки, к которой у ¨R установки OnClick()? – Shubhayu

+0

Вам нужно приложить трассировку стека. Вам нужно вызвать «Toast # show» для отображения тоста. «Toast # setDuration» может быть вызван только с помощью «LENGTH_SHORT» или «LENGTH_LONG». – Qberticus

+2

@Rithesh: где toast.show() –

ответ

5

почему бы вам не использовать

Toast.makeText(getApplicationContext(), "Your message", Toast.LENGTH_SHORT).show(); 

То, что вы написали в своей треске e даст вам сообщение об ошибке Этот тост не был создан с использованием Toast.makeText(). Поэтому вам лучше использовать этот метод.

Если вы хотите использовать пользовательское тост-сообщение, то одно обязательное, что вы еще не сделали в своем коде. После создания вашего тоста вы должны установить представление этого тоста, используя setView (ваш надутый объект макета). и затем вы должны вызвать toast.show(). Но помните, вы должны получить раздутую макет и передать ее setView().

Подробнее о пользовательском тосте см this link

+0

спасибо, что он работает как шарм – RMH

+0

k, но когда пользователь нажимает неправильный ответ, он должен показать ответ, а также должен пойти на следующий вопрос. Как я могу это сделать?? – RMH

+0

@Ritheshm в этом случае передает правильный ответ в виде сообщения к тосту. –

4
v.getTag() 

В вашем коде не найдено setTag(object).

После того, как вы установилиTag() в представление, тогда и только тогда вы можете получитьTag() того же вида.

Log.d("ERR", v.getTag().toString()); 

if (v.getTag().toString().equalsIgnoreCase("right"))

Ошибка придет сюда, прежде чем показывать Toast

вы также отсутствует, для просмотра Тост toast.show()

+0

, но я написал setText know – RMH

+0

, если (v.getTag(). ToString(). EqualsIgnoreCase ("right")) может возникнуть проблема. –

+0

k я получил его и решил, спасибо вам большое. – RMH

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