getActivity()在片段的AlertDialog中为null

My *_*God 10 android fragment android-alertdialog android-activity

为什么在getActivity()里面返回null AlertDialog

这是班级 -

Class A extends Common{

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
        Button save = (Button) view.findViewById(R.id.save);
        save.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

        System.out.println("the activity outside dialog.."+getActivity());

        AlertDialog.Builder alert = new AlertDialog.Builder(getActivity());
        alert.setPositiveButton("Check acitivity", 
        new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, 
            int whichButton) {
            dialog.cancel();
            System.out.println("the activity inside dialog.."+getActivity());
            }
         });
      }
}
Run Code Online (Sandbox Code Playgroud)

Common类将片段扩展为 -

import android.support.v4.app.Fragment;
Class Common extends Fragment
{
  //Some code
}
Run Code Online (Sandbox Code Playgroud)

输出是 -

the activity outside dialog..com.testapp.main.MainActivity@42131080
the activity inside dialog..null
Run Code Online (Sandbox Code Playgroud)

小智 6

 Activity activity;
@Override
public void onAttach(Activity activity) {
    super.onAttach(activity);
    this.activity=activity;
}
Run Code Online (Sandbox Code Playgroud)

  • 不要这样做!这可能会泄漏活动. (3认同)