在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();
}