2012-04-10 101 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的标签,即其中U R时的的onClick()按钮? – Shubhayu 2012-04-10 05:02:54

+0

您需要附加堆栈跟踪。你需要调用'Toast#show'来显示吐司。 'Toast#setDuration'只能用'LENGTH_SHORT'或'LENGTH_LONG'调用。 – Qberticus 2012-04-10 05:03:17

+2

@Rithesh:哪里是toast.show() – 2012-04-10 05:04:41

回答

5

你为什么不使用前

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

你在鳕鱼里写的东西e会给你一个错误,说这个烤面包从来没有使用Toast.makeText()创建。所以你最好使用这种方法。

如果你想使用自定义敬酒消息,那么有一点是强制性的,你有没有在你的代码做了什么。创建敬酒对象后,你必须设置的,目的是利用的setView(您膨胀布局对象)是敬酒。然后你必须最后调用toast.show()。但请记住,你必须得到膨胀的布局,并将其传递到setView()

欲了解更多有关自定义吐司看到this link

+0

非常感谢你,它的作品像魅力 – RMH 2012-04-10 05:13:13

+0

k但当用户点击错误的答案,它应该显示答案,也应该去下一个问题。我怎样才能做到这一点?? – RMH 2012-04-10 05:16:22

+0

@Ritheshm在这种情况下将正确答案作为消息传递给吐司。 – 2012-04-10 05:17:57

4
v.getTag() 

我在代码中找不到任何setTag(object)

一旦你setTag()的观点,然后再只有你能getTag()同样的看法。

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

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

错误都会来这里你展示Toast

你也失踪,查看吐司toast.show()

+0

但我写的setText知道 – RMH 2012-04-10 05:01:06

+0

如果(v.getTag()。toString()方法。equalsIgnoreCase( “右”))可能会有问题。 – 2012-04-10 05:03:05

+0

k我明白了,非常感谢你。 – RMH 2012-04-10 10:31:08