Java 用于更改文本视图的函数不';从另一个类调用时无法工作
我编写了一个函数来更改Java 用于更改文本视图的函数不';从另一个类调用时无法工作,java,android,Java,Android,我编写了一个函数来更改TextView的文本。它位于包含TextView的活动类中。但是,当从另一个类调用此函数时,它不起作用 函数如下所示: public class MainActivity extends AppCompatActivity { public void changeTest() { TextView test = (TextView) findViewById(R.id.textViewTest); guessedLetters.se
TextView
的文本。它位于包含TextView
的活动类中。但是,当从另一个类调用此函数时,它不起作用
函数如下所示:
public class MainActivity extends AppCompatActivity {
public void changeTest() {
TextView test = (TextView) findViewById(R.id.textViewTest);
guessedLetters.setText("test");
}
}
如果我从我的main活动
调用此函数,它工作得非常好:
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
如何修复此问题?如果您希望使用从MainActivity扩展而来的另一个activity获得此结果,可以通过以下方式完成:
main活动
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");
}
}
public class AnotherActivity extends MainActivity {
public void updateTest(Activity activity){
changeTest(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");
}
}
public class AnotherActivity extends MainActivity {
public void updateTest(Activity activity){
changeTest(activity);
}
}
这可能对你有帮助
main活动
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");
}
}
public class AnotherActivity extends MainActivity {
public void updateTest(Activity activity){
changeTest(activity);
}
}
其他类别
试试这个
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(this);
}
}
public class MyClass extends MainActivity {
public void myFunction(MainActivity mainActivity) {
mainActivity.changeTest();
}
}
当您在onCreate中调用setContentView,但您是否用另一种方式调用它时,它会工作?你能在两个onCreate方法上至少发布这一行吗?我已经更新了代码,希望现在更清晰:-)@Algorithm\u NL我发布了一些代码,你可以尝试在MyClass中复制,你不需要在该方法中创建MainActivity对象,只需编写这个。changeTest(),我认为它会改变。非常感谢,这就成功了!然而,当我用Intent Intent=new Intent(这个,GameplayActivity.class)定义一个新的意图(而不是定义一个TextView)时,我现在遇到了同样的问题代码>。我应该在哪里添加“活动”呢?你在哪里定义这个意图?在方法changeTest()中?