这里需要一些帮助,所以我尝试从另一个 .cs 运行方法,我在 mainActivity.cs 中运行了以下代码
protected override void OnCreate(Bundle savedInstanceState)
{
startGame();
}
public void startGame()
{
firstNum = FindViewById<TextView>(Resource.Id.tvFirstNum);
secondNum = FindViewById<TextView>(Resource.Id.tvSecondNum);
firstNum.Text = Convert.ToString(2);
secondNum.Text = Convert.ToString(2);
}
事情就是这样,我试图从另一个 CS 文件运行代码
private void BtnRestart_Click(object sender, EventArgs e)
{
MainActivity mp = new MainActivity();
mp.startGame();
}
但是我得到了错误
java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“android.view.View android.app.Activity.findViewById(int)”
有谁知道为什么?
谢谢!
您正在MainActivity
自己实例化您的类,它不会加载随附的布局。那是因为没有调用 Android 使用的生命周期方法,所以您的OnCreate
方法永远不会触发(通常处理布局)。因此FindViewById
将返回一个空值。
注意:你不应该像你在这里尝试做的那样从另一个类(特别是如果它是另一个活动)调用视图。如果你仍然想从另一个类调用它,你可以将 Activity 作为参数传递,但我不推荐这种方法。
我建议您阅读活动生命周期文档。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句