Pregunta

I am trying to use the context of the Activity inside the fragment .And i am getting this error

01-08 13:51:14.662: E/AndroidRuntime(10334): FATAL EXCEPTION: main
01-08 13:51:14.662: E/AndroidRuntime(10334): java.lang.NullPointerException
01-08 13:51:14.662: E/AndroidRuntime(10334):    at android.app.Dialog.<init>(Dialog.java:154)
01-08 13:51:14.662: E/AndroidRuntime(10334):    at android.app.Dialog.<init>(Dialog.java:131)
01-08 13:51:14.662: E/AndroidRuntime(10334):    at com.iween.newinfiniteapp.PendingApprovals$2.onClick(PendingApprovals.java:238)
01-08 13:51:14.662: E/AndroidRuntime(10334):    at android.view.View.performClick(View.java:4212)
01-08 13:51:14.662: E/AndroidRuntime(10334):    at android.view.View$PerformClick.run(View.java:17476)
01-08 13:51:14.662: E/AndroidRuntime(10334):    at android.os.Handler.handleCallback(Handler.java:800)
01-08 13:51:14.662: E/AndroidRuntime(10334):    at android.os.Handler.dispatchMessage(Handler.java:100)
01-08 13:51:14.662: E/AndroidRuntime(10334):    at android.os.Looper.loop(Looper.java:194)
01-08 13:51:14.662: E/AndroidRuntime(10334):    at android.app.ActivityThread.main(ActivityThread.java:5371)
01-08 13:51:14.662: E/AndroidRuntime(10334):    at java.lang.reflect.Method.invokeNative(Native Method)
01-08 13:51:14.662: E/AndroidRuntime(10334):    at java.lang.reflect.Method.invoke(Method.java:525)
01-08 13:51:14.662: E/AndroidRuntime(10334):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
01-08 13:51:14.662: E/AndroidRuntime(10334):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
01-08 13:51:14.662: E/AndroidRuntime(10334):    at dalvik.system.NativeStart.main(Native Method)

Code Where i am getting error

approval_button.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View arg0) {
                    final Dialog dialog = new Dialog(context);//this is line no 238
                    dialog.requestWindowFeature(dialog.getWindow().FEATURE_NO_TITLE);
                    dialog.setContentView(R.layout.approve_box);
                    dialog.setCancelable(false);
                    Button approve = (Button) dialog.findViewById(R.id.approve);
                    Button cancel = (Button) dialog.findViewById(R.id.cancel);
                    cancel.setOnClickListener(new OnClickListener() {

                        @Override
                        public void onClick(View arg0) {
                            dialog.dismiss();
                        }
                    });

                    dialog.show();

                }
            });

Here i am setting up the context

   public class PendingApprovals extends Fragment {

    final Context context = getActivity();


    @Override
    public View onCreateView(
            LayoutInflater inflater,
            ViewGroup container,
            Bundle savedInstanceState){
        View rootView = inflater.inflate(R.layout.main, container, false);
¿Fue útil?

Solución

Probably your fragment was not yet attached to your activity when you execute:

 final Context context = getActivity(); // looks like class field initialization

call it directly like: MyFragmentClass.this.getActivity()

Otros consejos

you should get the activity reference inside onActivityCreated.

 @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onActivityCreated(savedInstanceState);
                    context = getActivity();
    }

As activity is only available inside Fragment once this function is called.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top