在Android中获取片段中的上下文

在Android中获取片段中的上下文,android,android-fragments,android-dialog,Android,Android Fragments,Android Dialog,我试图在片段中使用活动的上下文。我得到了这个错误 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>

我试图在片段中使用活动的上下文。我得到了这个错误

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)
我在这里设置上下文

   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);

执行以下操作时,您的片段可能尚未附加到活动:

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

直接像这样调用它:
MyFragmentClass.this.getActivity()
您应该在ActivityCreated的
中获得活动引用

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

因为只有在调用此函数后,活动才能在片段内部使用。

在哪里调用getActivity()?它总是空的还是在像旋转一样的配置更改之后?在哪里调用final Context=getActivity()?
 @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onActivityCreated(savedInstanceState);
                    context = getActivity();
    }