Reputation: 1287
I am developing an quiz based app in that when the user clicks any of the options it should the a suitable messages such as "your ans is correct" ,"your ans is wrong".What i wanted is
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!!");
}
Any help is appreciable.
Upvotes: 2
Views: 380
Reputation: 19500
why don't you use
Toast.makeText(getApplicationContext(), "Your message", Toast.LENGTH_SHORT).show();
What you have written in your code will give you an error saying This toast was never created using Toast.makeText(). So it is better for you to use this method.
If you want to use custom toast message, then one thing is compulsory what you have not done in your code. After creating your toast object, you have to set the view to that toast using setView(your inflated layout object). and then you have to invoke toast.show() at last. But remember, you have to get the inflated layout and pass it to setView().
For more about custom toast see this link
Upvotes: 5
Reputation: 42026
v.getTag()
I am not finding any setTag(object)
in your code.
once you setTag() to the view, then and then only you can getTag() of the same view.
Log.d("ERR", v.getTag().toString());
if (v.getTag().toString().equalsIgnoreCase("right"))
Error will come here before you showing Toast
you also missing, to view the Toast toast.show()
Upvotes: 4