gpt4 book ai didi

java - 从另一个类调用时更改 TextView 的函数不起作用

转载 作者:行者123 更新时间:2023-11-29 04:55:48 25 4
gpt4 key购买 nike

我编写了一个函数来更改 TextView 的文本。它位于包含 TextView 的 Activity 类中。但是,当从另一个类调用时,此函数不起作用。

函数如下所示:

public class MainActivity extends AppCompatActivity {
public void changeTest() {
TextView test = (TextView) findViewById(R.id.textViewTest);
guessedLetters.setText("test");
}
}

如果我从我的 MainActivity 调用这个函数,它工作得很好:

public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_gameplay);

changeTest();
}
}

但如果我从扩展 MainActivity 的类调用它,我会在 android.app.Activity.findViewById(Activity.java:1884) 处得到一个 java.lang.NullPointerException

public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_gameplay);

MyClass myClass = new MyClass();
myClass.myFunction();
}
}

public class MyClass extends MainActivity {
public void myFunction() {
MainActivity mainActivity = new MainActivity();
mainActivity.changeTest();
}
}

我该如何解决这个问题?

最佳答案

如果您希望使用从 MainActivity 扩展的另一个 Activity 来获得此结果,您可以按以下方式进行:

主 Activity

public class MainActivity extends AppCompatActivity {

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

//changeTest(this);

AnotherActivity a = new AnotherActivity();
a.updateTest(this);


}

public void changeTest(Activity activity) {
TextView test = (TextView)activity.findViewById(R.id.textViewTest);
test.setText("test");
}
}

另一个 Activity

public class AnotherActivity extends MainActivity {

public void updateTest(Activity activity){
changeTest(activity);
}
}

关于java - 从另一个类调用时更改 TextView 的函数不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33804282/

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