片段中的吐司不显示

时间:2012-12-26 15:24:01

标签: android android-fragments toast

当用户单击活动的FRAGMENT中的按钮时,我希望有一个弹出式上下文帮助。我已尝试使用Toast执行此操作,但徒劳无功。弹出对话框未显示(请注意Use Toast inside Fragment中的建议没有帮助。)

片段类中的代码如下所示:

            final Button help = (Button) view.findViewById(R.id.help_button);
        del.setOnClickListener(new View.OnClickListener(){
        public void onClick(View v) {
            Context context = (TabsActivity) getActivity().getApplicationContext();
            CharSequence text = "Hello toast!";
            int duration = Toast.LENGTH_LONG;
            Toast toast = Toast.makeText(view.getContext(), text, duration);
            toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
            toast.show();
            }
        });

我尝试了CONTEXT的几种变体,其中两种变体显示在代码中。 我也尝试了getActivity()getView().getContext()getContext()所有这些都是徒劳的。你能帮助理解如何在片段中设置CONTEXT吗?

4 个答案:

答案 0 :(得分:5)

使用您的应用程序上下文,而不是从视图中再次获取它。

        Context context = getActivity().getApplicationContext();
        Toast.makeText(context, "Hello toast!", Toast.LENGTH_LONG).show();

保持简单并从那里开始工作,这样你就可以确定我们确实导致了你的错误。

将记录放入您的代码中,然后您可以确定何时实际使用onClick侦听器而不是依赖Toast

 setOnClickListener(new View.OnClickListener(){
     @Override
     public void onClick(View v) {
          Log.d("MyTag", "Button 1 was pressed");
     }
 }

答案 1 :(得分:4)

简单地使用getActivity()没有其他东西。不需要Casting或者也不需要获取应用程序上下文。

我使用Toast.makeText(getActivity(), "Simple Toast",1000).show();

它适用于我。

答案 2 :(得分:1)

你的代码中的

        final Button help = (Button) view.findViewById(R.id.help_button);
        del.setOnClickListener(new View.OnClickListener(){

不应该阅读(注意帮助现在得到这个onclick监听器):

        final Button help = (Button) view.findViewById(R.id.help_button);
        help.setOnClickListener(new View.OnClickListener(){

答案 3 :(得分:1)

试试这个,

Toast toast = Toast.makeText(getActivity().getApplicationContext(), "text", 100);
toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
toast.show();