java - 为什么这个在 Android 上更改文本的代码不起作用?

标签 java android textview

当用户按下按钮时更改文本的代码不起作用。为什么?

package com.cookbook.simple_activity;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class activity extends Activity {
    private TextView txt = (TextView) findViewById(R.id.hello_text);
    Button startButton = (Button) findViewById(R.id.trigger);
   @Override
   public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_simple);


   startButton.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view) {
            txt.setText(R.string.pressthisbutton);
        }
    });
 }
}

最佳答案

更改为

    public class activity extends Activity {
    private TextView txt;
    Button startButton;
   @Override
   public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_simple);
        txt = (TextView) findViewById(R.id.hello_text);
        startButton = (Button) findViewById(R.id.trigger);

在使用 setContentView() 膨胀 layout 后,您需要初始化 Views。由于您的 Views 存在于您的 layout 中,因此如果您没有先膨胀您的 layout,它们将返回 null。您可以在 setContentView() 之前声明它们,但在此之后才能初始化它们。

此外,由于您尝试在 listener 内访问 txt,因此它必须是 final 或声明为上面的成员变量。

这是一个相当容易发现的问题,但并非总是如此。当您发布问题时,请尝试描述哪些内容不起作用以及如何起作用。我猜当您尝试在 Button 上设置 listener 时,它会崩溃,这将是一个 NPE。当崩溃时,请提供logcat,以便我们更容易发现问题。

编辑

查看 xml 后,您对初始文本使用的 string 值与单击 Button 时的文本值相同,所以当然不会。改变。我不确定您在这里追求什么,但代码正在按照编写的方式运行。

关于java - 为什么这个在 Android 上更改文本的代码不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18809026/

相关文章:

java - 如果 equals 方法返回 true,如何在内存中分配相同的空间?

android - 如何防止 Cordova(3.2) App 在后台被 Android 杀死?

android - 导航不会呈现 fragment

java - 安卓服务: Detect when device is idle for X minutes

android - 不要在 Android TextView 中以缩写形式包装文本

java - 无法将 textview 添加到此 xml 代码中?

java - 使用 Richfaces 进行盲注和盲注时出现问题

Java:全局更新对象引用

java - ScheduledExecutorService:如何捕获它的异常?

android - 当我的应用程序失去焦点并重新获得焦点时,UI 会更新。奇怪的问题