首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Java中使复选框/EditText对象全局化

如何在Java中使复选框/EditText对象全局化
EN

Stack Overflow用户
提问于 2014-07-28 03:39:37
回答 2查看 487关注 0票数 1

所以我意识到,这个问题被问了很多次,但我无法以一种我能够做到的方式将其他任何问题应用到我的情况中。基本上,我在Java中遇到了全局对象的问题,因为我大部分的经验都是在Python中。

下面是我的密码。基本来说,checkbox1是我希望它出现的地方,但我不知道如何让我的两种方法认识到它就在那里。我可以通过在checkbox1和resetAll中定义doMath来解决这个问题,但是我相信还有更好的解决方法。

代码语言:javascript
运行
复制
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
    }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-07-28 03:48:07

问题:

代码语言:javascript
运行
复制
CheckBox checkbox1 = (CheckBox)findViewById(R.id.checkBox1);

在充气或设置活动的initialized之前,不能仅仅使用View,否则就会得到NPE。

解决方案:

创建一个您已经做过的全局变量,但不要先初始化它。

代码语言:javascript
运行
复制
 CheckBox checkbox1;

onCreate方法的ActionBarActivity中,然后在setContentView(R.layout.your_layout_for_the_checkbox);之后初始化它

代码语言:javascript
运行
复制
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.internal_main);
    checkbox1 = (CheckBox)findViewById(R.id.checkBox1);
}

完成之后,可以在这两个方法中调用checkbox1字段,只要该方法在MainActivity类中

票数 1
EN

Stack Overflow用户

发布于 2014-07-28 03:50:39

如果您的意思是希望它在整个MainActivity中都是可访问的,则需要将该复选框声明为成员:

代码语言:javascript
运行
复制
public class YourActivity extends Activity{


    private CheckBox mCheckBoxOne;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activty_your);

        mCheckBoxOne = (CheckBox)findViewById(R.id.checkBox1);
    }

    public void resetAll(View view){
        mCheckBoxOne.setChecked(!mCheckBoxOne.isChecked());
    }

    public void doMath(View view){
        mCheckBoxOne.setChecked(!mCheckBoxOne.isChecked());
    }
}

如果希望从其他地方访问它,则需要将上下文转换为MainActivity或使用interface。这就是你想要的吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24988109

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档