0

当用户单击活动片段中的按钮时,我希望弹出上下文帮助。我曾尝试使用Toast来执行此操作,但徒劳无功。弹出对话框不显示(另请注意,在 Fragment 中使用 Toast中的建议没有帮助)。

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

            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()都是徒劳的。您能否帮助理解如何在片段中设置上下文?

4

4 回答 4

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");
     }
 }
于 2012-12-26T15:33:10.720 回答
4

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

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

它对我有用。

于 2012-12-26T15:33:41.427 回答
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(){
于 2012-12-26T15:33:03.917 回答
1

尝试这个,

Toast toast = Toast.makeText(getActivity().getApplicationContext(), "text", 100);
toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
toast.show();
于 2012-12-26T15:36:09.480 回答