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()中?