Java MainActivity中的片段静态复选框NullPointer异常
为什么我不能访问静态复选框对象 MainActivity(我想在哪里称呼它) ColorFragment(初始化时) 我尝试将Java MainActivity中的片段静态复选框NullPointer异常,java,android,android-fragments,Java,Android,Android Fragments,为什么我不能访问静态复选框对象 MainActivity(我想在哪里称呼它) ColorFragment(初始化时) 我尝试将getApplicationContext()、getActivity()和其他内容添加到getView(),但没有成功 为什么会导致此NullPointerException?您可以从ColorFragment类外部访问静态RadioButton黄色成员变量 问题在于该成员变量被初始化为非空值的点。由于您懒散地初始化此成员变量,因此需要注意以下几点: 1) 必须确保仅在
getApplicationContext()、getActivity()
和其他内容添加到getView()
,但没有成功
为什么会导致此
NullPointerException
?您可以从ColorFragment类外部访问静态RadioButton黄色成员变量
问题在于该成员变量被初始化为非空值的点。由于您懒散地初始化此成员变量,因此需要注意以下几点:
1) 必须确保仅在调用ColorFragment的onCreateView方法后访问ColorFragment.yellow,或者确保检查null,以便在ColorFragment尚未调用其onCreateView方法时不会因NullPointerException而崩溃
及
2) 确保您确实有一个id为黄色的RadioButton,该按钮在ColorFragment作为其内容视图膨胀的版面中声明。如果不这样做,findViewById(R.id.yellow_按钮)将返回null,这反过来将黄色设置为null,您将面临NullPointerException的风险。问题 变量
yellow
返回null
,因为它是在我尝试调用它之后实例化的
解决方案 我在
ColorFragment
的onActivityCreated
方法中查找static
变量main activity.color
的值
我还使用了开关和大小写切换到setChecked()
switch (MainActivity.color) {
case 0:
yellow.setChecked(true);
break;
case 1:
...
确保在将ColorFragment
附加到主活动后执行ColorFragment
?好主意,但即使在设置了viewpager后将其明确设置,它仍然会给出一个空指针。ColorFragment
在ViewPager中的位置是什么?我正在使用TabHost添加一个view pager,以将ColorFragment添加到view pager中。你说得很对。它返回空值。我用if语句改变了查找对象的方式并修复了它。
static RadioButton yellow;
yellow = (RadioButton) getView().findViewById(R.id.yellow_button);
switch (MainActivity.color) {
case 0:
yellow.setChecked(true);
break;
case 1:
...