首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >setText in on setText已更改?

setText in on setText已更改?
EN

Stack Overflow用户
提问于 2012-12-13 02:31:10
回答 3查看 465关注 0票数 0

我正在试着做一个简单的文本游戏,但我甚至不能通过第一步。布局中有一个文本视图和3个单选按钮。我想要在单击其中一个单选按钮时更改文本,并确定应用程序要使用的文本,我有一个int位置。示例:我选择按钮一:如果位置= 1,则将文本设置为文本2。如果位置= 9,则将文本设置为11,依此类推。代码如下:

代码语言:javascript
复制
import android.app.Activity;
import android.os.Bundle;
import android.view.Window;
import android.widget.RadioGroup;
import android.widget.RadioGroup.OnCheckedChangeListener;
import android.widget.TextView;


public class Game extends Activity implements OnCheckedChangeListener{
    public int position;
    TextView text;
    RadioGroup rggr;


    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        position = 1;
        text = (TextView) findViewById(R.id.text);

        setContentView(R.layout.p1);

        rggr = (RadioGroup) findViewById(R.id.rgGr);
        rggr.setOnCheckedChangeListener(this);
    }

    public void onCheckedChanged(RadioGroup group, int checkedId) {
        // TODO Auto-generated method stub
        switch (checkedId){
                case R.id.rb1:
                    if(position == 1){
                        text.setText("this is text 1");
                        position = 2;

                    }
                }
            }
        }

如果我将行"text.setText("this is text 1");“更改为其他行。例如setcontentview,那么一切都可以正常工作。但是当我想要更改文本时,当我选择单选按钮时,它就崩溃了。

EN

回答 3

Stack Overflow用户

发布于 2012-12-13 02:41:16

在设置此活动的UI之前,您似乎正在尝试获取对TextView的引用。而不是

代码语言:javascript
复制
    text = (TextView) findViewById(R.id.text);
    setContentView(R.layout.p1);

试一试

代码语言:javascript
复制
    setContentView(R.layout.p1);
    text = (TextView) findViewById(R.id.text);
票数 2
EN

Stack Overflow用户

发布于 2012-12-13 02:42:36

如果您在设置内容视图之前尝试获取视图,则它将为空,因此在本例中text为空,因为您在设置内容视图之前调用它。您可以使用调试器验证这一点。

因此,当您尝试通过text.setText(...)访问它时它将与NullPointerException一起崩溃

正如David M也说过的,在setContentView之后调用findViewById可以解决这个问题

对于将来的参考,正如David M所评论的那样,LogCat输出将是有帮助的。

票数 0
EN

Stack Overflow用户

发布于 2012-12-13 21:19:55

感谢你们所有人。这是错误的顺序

代码语言:javascript
复制
 setContentView(R.layout.p1);
 text = (TextView) findViewById(R.id.text);

谢谢。

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

https://stackoverflow.com/questions/13846278

复制
相关文章

相似问题

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