java– 我想将我的变量设置在我的类的顶部,而不是在方法中

java– 我想将我的变量设置在我的类的顶部,而不是在方法中,第1张

概述我似乎无法解决这个令人困惑的问题,我有很多很多东西需要在课堂上添加,以帮助减少混乱.由于多种方法使用这些复选框变量.我想把所有东西放在开口支架下面的顶部.这是有效的,但不是我想要的:publicclassMyClassextendsActivityimplementsView.OnClickListener{//le

我似乎无法解决这个令人困惑的问题,我有很多很多东西需要在课堂上添加,以帮助减少混乱.

由于多种方法使用这些复选框变量.

我想把所有东西放在开口支架下面的顶部.

这是有效的,但不是我想要的:

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 – 我想将我的变量设置在我的类的顶部,而不是在方法中所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1104061.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存