java – 我想将我的变量设置在我的类的顶部,而不是在方法中
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 我想将我的变量设置在我的类的顶部,而不是在方法中,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2034字,纯文字阅读大概需要3分钟。
内容图文
我似乎无法解决这个令人困惑的问题,我有很多很多东西需要在课堂上添加,以帮助减少混乱.
由于多种方法使用这些复选框变量.
我想把所有东西放在开口支架下面的顶部.
这是有效的,但不是我想要的:
public class MyClass extends Activity implements View.OnClickListener {
//leaving out most code like onCreate. Just pretend it's there.
public void checkboth(View view) {
CheckBox cb1 = (CheckBox) findViewById(R.id.cb1);
CheckBox cb2 = (CheckBox) findViewById(R.id.cb2);
cb1.setchecked(true);
cb2.setchecked(true);
}
@Override
public void onClick(View v) {
}
}
但是对于我的生活,我无法弄清楚为什么我不能这样做:
public class MyClass extends Activity implements View.OnClickListener {
CheckBox cb1 = (CheckBox) findViewById(R.id.cb1);
CheckBox cb2 = (CheckBox) findViewById(R.id.cb2);
//leaving out most code like onCreate. Just pretend it's there.
public void checkboth(View view) {
cb1.setchecked(true);
cb2.setchecked(true);
}
@Override
public void onClick(View v) {
}
}
解决方法:
您无法在此类方法之外初始化视图
CheckBox cb1 = (CheckBox) findViewById(R.id.cb1);
CheckBox cb2 = (CheckBox) findViewById(R.id.cb2);
因为这意味着这些行在onCreate()之前运行,导致这些变量为null,并在尝试调用这些变量上的方法时抛出NPE.这是因为你在onCreate()中调用了setContentView(R.layout.your_layout),并且在那个布局中调用了你的Views“live”.这意味着在调用setContentView()使布局膨胀之前,无法初始化它们.在尝试初始化视图之前,必须调用setContentView().没有办法绕过那一部分.
有些人可能会有所帮助的是创建一个单独的函数,在调用setContentView()之后初始化这些变量.像这样的东西
public class MyActivity
// declare your Views so they are global to the class
TextView tv;
// more views
@Override
public void onCreat(stuff)
{
// super call
setContentView(R.layout.my_layout);
init();
然后在你的init()函数中初始化你声明的所有视图
private void init()
{
tv = (TextView) findViewById(R.id.myTextView);
// more initializations
}
但你可以在onCreate(),onResume()或者只要它在setContentView()之后的任何地方初始化它们
以这种方式声明和初始化它们将确保它们对Activity的其他函数,监听器,内部类等都可用.如果你有很多观点,它可能会减少“混乱”.
内容总结
以上是互联网集市为您收集整理的java – 我想将我的变量设置在我的类的顶部,而不是在方法中全部内容,希望文章能够帮你解决java – 我想将我的变量设置在我的类的顶部,而不是在方法中所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。