2012-04-10 4 views
2

사용자가 "your ans is correct", "ans is not wrong"와 같은 적합한 메시지를 사용해야 할 때 퀴즈 기반 앱을 개발 중입니다. 내가 원했던 것은토스트 메시지 표시

입니다.
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는 온 클릭()를 설정에서 R 버튼 즉, 뷰 V의 태그를 설정하는 this link

+0

정말 고마워요. – RMH

+0

k와 같이 작동하지만 사용자가 잘못된 대답을 클릭하면 대답을 보여줘야하며 다음 질문을해야합니다. 내가 어떻게 할 수 있을까 ?? – RMH

+0

@Ritheshm은이 경우 정확한 답을 메시지로 축배에 전달합니다. –

4
v.getTag() 

코드에 setTag(object)가 없습니다.

일단 뷰에 태그()를 설정하면 동일한보기의 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

관련 문제