显示Toast消息

时间:2012-04-10 04:56:28

标签: java android toast

我正在开发一个基于测验的应用程序,因为当用户点击任何选项时,它应该是一个合适的消息,例如“你的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!!");
    }

任何帮助都很明显。

2 个答案:

答案 0 :(得分:5)

为什么不使用

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

你在代码中写的内容会给你一个错误,说这个toast从未使用Toast.makeText()创建。所以最好使用这种方法。

如果您想使用自定义Toast消息,那么您必须在代码中执行以下操作。创建 Toast对象后,您必须使用 setView(充气的布局对象)将视图设置为Toast。然后你必须最后调用 toast.show()。但请记住,您必须获得膨胀的布局并将其传递给 setView()

有关自定义吐司的详情,请参阅this link

答案 1 :(得分:4)

v.getTag()

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

一旦你将Tag()设置为视图,那么只有你可以获得相同视图的getTag()。

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

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

在您显示Toast

之前会出现错误

你也失踪了,要查看Toast toast.show()