2014-04-01 56 views
0

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

它们都是未定义的。我的猜测是我需要在某处放置'视图'或'这个',或者扩展活动?但我不明白这个问题。

公共类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; 
    } 

} 
+0

您是否尝试将您的上下文更改为AlertDialog.Builder PUHelpBuilder = new AlertDialog.Builder(getActivity())? – joao2fast4u

+0

这适用于AlertDialog生成器。布局充气器如何? – user3247335

+0

@ user3247335同样的'getActivity()。getLayoutInfalter()' – Raghunandan

回答

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,这就是为什么你可以在内使用方法。但正如我所说,在你的onClick()你实际上是一个匿名的内部类,所以this不再指Activity Context