2014-04-01 165 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