片段中的PopUp对话框onClickListener - Java Android

时间:2014-04-01 20:40:16

标签: java android dialog

我的activity_main中有一个片段。该片段包含一个按钮(ViewButton)。当我按下这个按钮时,我想要它弹出一个弹出对话框。 我在下面有以下代码,问题是我得到两个我似乎不太了解的错误:  新的AlertDialog.Builder(这); getLayoutInflater();

他们都是未定义的。我的猜测是我需要查看'或者'这个'某处,或延长活动?但我无法完全理解这个问题。

公共类CurrentFragment扩展Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater,ViewGroup container, Bundle savedInstanceState) {

    View view =inflater.inflate(R.layout.current_fragment, container, false);


    Button ViewButton = (Button)view.findViewById(R.id.ViewButton);

        ViewButton.setOnClickListener(new View.OnClickListener()
          {
          public void onClick(View view)



                //public void ShowPUDialog() 
                {

            AlertDialog.Builder PUHelpBuilder = new AlertDialog.Builder(this);
            PUHelpBuilder.setTitle("Enter Pick Up Address");

            LayoutInflater inflater = getLayoutInflater();
            View DialogLayout = inflater.inflate(R.layout.pudialog, null);
            PUHelpBuilder.setView(DialogLayout);

            PUHelpBuilder.setPositiveButton("Done", new DialogInterface.OnClickListener() {

                 @Override   
                 public void onClick(DialogInterface dialog, int which)
                 {

                 }
            });


            AlertDialog helpDialog = PUHelpBuilder.create();
            helpDialog.show();

                }     

          });   

    }


return view;
    }

}

1 个答案:

答案 0 :(得分:1)

使用getActivity()v.getContext()代替this。由于您位于OnClickListener(匿名内部类)this内,因此引用OnClickListener而不是Context。尝试像

这样的东西
AlertDialog.Builder PUHelpBuilder = new AlertDialog.Builder(v.getContext());

Context也需要getLayoutInflater(),因为它是Activity方法,所以尝试相同的事情

v.getContext().getLayoutInflater();

修改

查看Activity Docs ... extends Context,这意味着它拥有自己的Context,这就是为什么你可以在this内使用Acitivity的原因} 方法。但正如我所说,在你的onClick()中,你实际上是在一个匿名的内部阶级中,所以this不再引用Activity Context