首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我们应该如何在Android中设置小部件的值?

我们应该如何在Android中设置小部件的值?
EN

Stack Overflow用户
提问于 2016-07-28 02:17:45
回答 3查看 38关注 0票数 0

我正在看我的代码,我意识到至少有3种方法可以在代码中获得小部件的引用:

第一个(在onCreate之前):

代码语言:javascript
运行
复制
private TextView textView= (TextView) findViewById(R.id.textView);
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_layout);
    }

第二个(在onCreate中):

代码语言:javascript
运行
复制
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_layout);

        final TextView textView= (TextView) findViewById(R.id.textView);
     }

第三个步骤(在onCreate中创建和设置):

代码语言:javascript
运行
复制
private TextView textView;
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main_layout);

            textView= (TextView) findViewById(R.id.textView);
         }

这三种方法有什么不同?我应该什么时候使用它们?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-07-28 02:21:16

第一种方法并不能保证您的小部件确实是实例化的,它不在onCreate中。

Second将被实例化,但它的值不能更改,因为它将成为一个常量,成为最后一个。

第三,它是一个将在onCreate中实例化的全局变量,您可以在代码的任何其他部分中使用它。

票数 0
EN

Stack Overflow用户

发布于 2016-07-28 02:24:13

您必须在调用findViewById()之前调用setContentView(),因此在第一种方法中,您将始终获得null。第二和第三个是相同的,除了final关键字,但这是Java feature,不是安卓的。

票数 1
EN

Stack Overflow用户

发布于 2016-07-28 02:22:51

如果你需要调用findViewById(),那么调用应该在setContentView之后的任何地方。在此之前,就像你的第一个选择一样。第三种方法创建一个实例变量,仅当文本视图在整个类中被大量访问时才使用它,否则只需在需要的地方调用findViewById

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

https://stackoverflow.com/questions/38620419

复制
相关文章

相似问题

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