为什么我无法访问静态复选框对象?
MainActivity (我想在哪里调用)
if (color == 0) {
ColorFragment.yellow.setChecked(true);
}
...
ColorFragment (初始化时)
static RadioButton yellow;
yellow = (RadioButton) getView().findViewById(R.id.yellow_button);
我尝试将getApplicationContext(), getActivity()
和其他人添加到getView()
但没有运气。
为什么导致此NullPointerException
?
答案 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
的值。
我也使用了ColorFragment
和switch
来case
。
setChecked()