Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/218.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java MainActivity中的片段静态复选框NullPointer异常_Java_Android_Android Fragments - Fatal编程技术网

Java MainActivity中的片段静态复选框NullPointer异常

Java MainActivity中的片段静态复选框NullPointer异常,java,android,android-fragments,Java,Android,Android Fragments,为什么我不能访问静态复选框对象 MainActivity(我想在哪里称呼它) ColorFragment(初始化时) 我尝试将getApplicationContext()、getActivity()和其他内容添加到getView(),但没有成功 为什么会导致此NullPointerException?您可以从ColorFragment类外部访问静态RadioButton黄色成员变量 问题在于该成员变量被初始化为非空值的点。由于您懒散地初始化此成员变量,因此需要注意以下几点: 1) 必须确保仅在

为什么我不能访问静态复选框对象

MainActivity(我想在哪里称呼它)

ColorFragment(初始化时)

我尝试将
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:
...