MainActivity中的片段静态CheckBox NullPointer异常

时间:2014-12-22 19:01:18

标签: java android android-fragments

为什么我无法访问静态复选框对象?

MainActivity (我想在哪里调用)

if (color == 0) {
    ColorFragment.yellow.setChecked(true);
}
...

ColorFragment (初始化时)

static RadioButton yellow;

yellow = (RadioButton) getView().findViewById(R.id.yellow_button);

我尝试将getApplicationContext(), getActivity()和其他人添加到getView()但没有运气。

为什么导致此NullPointerException

2 个答案:

答案 0 :(得分:1)

您肯定可以从ColorFragment类的外部访问静态RadioButton黄色成员变量。

问题在于将此成员变量初始化为非null的点。由于您懒惰初始化此成员变量,因此需要注意以下几点:

1)您必须确保在调用ColorFragment的onCreateView方法后才访问ColorFragment.yellow,或者确保检查null,以便在ColorFragment尚未调用其onCreateView方法时不会因NullPointerException而崩溃

2)确保你确实有一个RadioButton,其中我在ColorFragment膨胀作为其内容视图的布局中声明了id yellow_button。如果不这样做,findViewById(R.id.yellow_button)将返回null,而null又将黄色设置为null,并且您将面临NullPointerException的风险。

答案 1 :(得分:0)

问题

变量yellow正在返回null,因为它在我尝试调用它之后被实例化。


解决方案

我在static的{​​{1}}方法中查找了MainActivity.color变量onActivityCreated的值。

我也使用了ColorFragmentswitchcase

setChecked()
相关问题