gpt4 book ai didi

java - setText 方法上的 NullPointerException

转载 作者:行者123 更新时间:2023-12-01 11:14:15 25 4
gpt4 key购买 nike

我将首先向您提供 Java 和 XML 代码,并在下面解释我的问题。

EditText et1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
EditText et1 = (EditText) findViewById(R.id.et1);
}

//Called when Button clicked
public void calculate(View view) {
et1.setText("test"); //ERROR IN THIS LINE

}

(相关)XML 代码

<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/et2"
android:layout_below="@+id/textView"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:inputType="numberDecimal"/>

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/btnText"
android:id="@+id/btnCalc"
android:layout_below="@+id/et2"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginTop="49dp"
android:onClick="calculate"/>

一旦我点击按钮,我的应用程序就会关闭。在 Android Studio 中我可以看到有一个 NullPointerException。当我写“EditText et1 = (EditText) findViewById(R.id.et1);”时在“计算”方法中一切正常。所以我的问题是:

  1. 为什么?

  2. 如何使我可以在每个方法(在此类中)中使用 EditText et1 的功能?

通过阅读其他帖子,我知道 findViewById(id) 显然返回“null”,但我使用了正确的 Id。

最佳答案

您要定义编辑文本两次,请执行以下操作:

EditText et1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et1 = (EditText) findViewById(R.id.et1);
}

//Called when Button clicked
public void calculate(View view) {
et1.setText("test"); //ERROR IN THIS LINE

}

关于java - setText 方法上的 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32019569/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com