【问题标题】:PopUp dialog onClickListener from fragment - Java Android来自片段的弹出对话框 onClickListener - Java Android
【发布时间】:2014-04-01 20:40:15
【问题描述】:

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

它们都是未定义的。我的猜测是我需要把“视图”或“这个”放在某个地方,或者扩展活动?但我无法准确理解问题所在。

公共类 CurrentFragment 扩展片段 {

    @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;
    }

}

【问题讨论】:

  • 您是否尝试将上下文更改为 AlertDialog.Builder PUHelpBuilder = new AlertDialog.Builder(getActivity())?
  • 这适用于 AlertDialog Builder。布局充气机怎么样?
  • @user3247335 相同getActivity().getLayoutInfalter()
  • 我不敢相信它这么简单。有人能解释一下活动是如何扩展和实施的吗?
  • 我试图在我的编辑中解释。我希望这是有道理的。

标签: java android dialog


【解决方案1】:

使用getActivity()v.getContext() 而不是this。由于您在 OnClickListener(匿名内部类)中,this 指的是 OnClickListener 而不是正确的 Context。尝试类似

AlertDialog.Builder PUHelpBuilder = new AlertDialog.Builder(v.getContext());

getLayoutInflater() 也需要一个 Context,因为它是一个 Activity 方法,所以尝试同样的方法

v.getContext().getLayoutInflater();

编辑

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-21
    • 1970-01-01
    相关资源
    最近更新 更多