2014-04-01 3 views
0

내 activity_main 내에 조각이 있습니다. 이 단편에는 버튼 (ViewButton)이 포함되어 있습니다. 이 버튼을 누르면 팝업 대화 상자가 나타납니다. 나는 아래의 코드를 가지고 있는데 문제는 내가 잘 이해하지 못하는 두 가지 오류가 있다는 것입니다. new 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 Builder에서 작동합니다. 레이아웃 인플레이터는 어떻습니까? – user3247335

+0

@ user3247335 같은'getActivity(). getLayoutInfalter()' – Raghunandan

답변

1

사용 중 getActivity() 또는 v.getContext() 대신 this. OnClickListener (익명 내부 클래스) 내부에 있기 때문에 thisContext 대신 OnClickListener을 나타냅니다. 또한 getLayoutInflater()에 대한 Context 필요

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

같은 것을 시도 이후는 ... 그것을 Activity 방법은 그래서 Activity Docs

v.getContext().getLayoutInflater(); 

편집

봐 같은 일을 시도하다 extends Context 즉, 자신의 Context이고의 내부에 this을 사용할 수있는 이유는 무엇입니까?방법. 하지만 내가 말했듯이, 귀하의 onClick()에 실제로는 익명의 내부 클래스가 있으므로 this은 더 이상 Activity Context을 가리 키지 않습니다.