2012-04-10 4 views
2

私は、あなたが "あなたのansは正しい"、 "あなたのansは間違っています"などの適切なメッセージをユーザが選択すると、クイズベースのアプリケーションを開発しています。トーストメッセージを表示する

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

を参照してください? – Shubhayu

+0

スタックトレースを添付する必要があります。トーストが表示されるようにするには 'Toast#show'を呼び出す必要があります。 'Toast#setDuration'は' LENGTH_SHORT'または 'LENGTH_LONG'でのみ呼び出すことができます。 – Qberticus

+2

@Rithesh:toast.show()は –

答えて

5

を表示するToast

あなたも行方不明を、表示する前にここに来る

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

あなたがあなたのタラで書いたことeはあなたにと言うエラーを表示します。このトーストはToast.makeText()を使用して作成されたことはありません。したがって、この方法を使用する方がよいでしょう。

カスタムトーストメッセージを使用する場合は、コードで実行していないことを強制する必要があります。 トーストオブジェクトを作成したら、のsetView(あなたの膨張したレイアウトオブジェクト)を使用して、そのトーストにビューを設定する必要があります。そして最後にtoast.show()を呼び出さなければなりません。しかし、膨らんだレイアウトを取得してsetView()に渡す必要があります。

カスタムトーストの詳細はどこでuはのonClick()を設定rにボタンつまり、ビューVのタグを設定しているthis link

+0

チャーム – RMH

+0

kのようにうまくいきましたが、ユーザーが間違った答えをクリックすると答えが表示され、次の質問に行くはずです。どうやってやるの?? – RMH

+0

@Ritheshmはこの場合トーストにメッセージとして正解を渡します。 –

4
v.getTag() 

コードにsetTag(object)が見つかりません。

一度ビューにTag()を設定すると、同じビューのgetTag()だけが表示されます。

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

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

エラーは、なぜあなたは使用していないトーストtoast.show()

+0

しかし、(v.getTag()。toString()。equalsIgnoreCase( "right"))に問題がある場合は、setTextに – RMH

+0

と書いてあります。 –

+0

k私はそれを得て、非常に感謝しました。 – RMH

関連する問題