因此,我意识到这个问题已经被问了很多,但是我无法以我能够解决的方式将其他任何问题应用到我的情况中。基本上,我在Java中遇到全局对象时遇到了麻烦,因为我的大部分经验是在Python中。
下面是我的代码。基本上,checkbox1是我想要的位置,但是我不知道如何使用两种方法来识别它。我可以通过在resetAll和doMath中定义checkbox1来解决此问题,但是我敢肯定有更好的解决方法
public class MainActivity extends ActionBarActivity {
// right here is where I want my objects so that both resetAll and doMath can use them
CheckBox checkbox1 = (CheckBox)findViewById(R.id.checkBox1);
public void resetAll(View view){
// do stuff with checkbox1
}
public void doMath(View view){
// do stuff with checkbox1
}
最佳答案
问题:
CheckBox checkbox1 = (CheckBox)findViewById(R.id.checkBox1);
在为活动充气或设置contentView之前,您不能仅
initialized
一个View
,否则将获得NPE。解:
创建一个已经完成但未首先初始化的全局变量。
CheckBox checkbox1;
在
onCreate
的ActionBarActivity
方法中,然后在setContentView(R.layout.your_layout_for_the_checkbox);
之后将其初始化@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.internal_main);
checkbox1 = (CheckBox)findViewById(R.id.checkBox1);
}
完成后,您可以在两个方法中都调用
checkbox1
字段,只要该方法在您的MainActivity
类中即可