简体   繁体   中英

PopUp dialog onClickListener from fragment - Java Android

I have a fragment within my activity_main. This fragment contains a button (ViewButton). When i press this button I would like for it to bring up a pop Up dialog. I have the following code below, the issue is that i get two errors which i dont seem to understand very well: new AlertDialog.Builder(this); getLayoutInflater();

They are both coming up as undefined. My guess is that i need to put 'view' or 'this' somewhere, or extend the Activity? But i cant understand exactly the problem.

public class CurrentFragment extends 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;
    }

}

Use either getActivity() or v.getContext() instead of this . Since you are inside of an OnClickListener (Anonymous inner class) this refers to the OnClickListener instead of the proper Context . Try something like

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

You need a Context for getLayoutInflater() also since it is an Activity method so try the same thing

v.getContext().getLayoutInflater();

Edit

Look at the Activity Docs ...it extends Context which means it has it's own Context and is why you can use this when inside of an Acitivity method. But as I said, in your onClick() you are actually inside of an anonymous inner-class so this no longer refers to the Activity Context .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM