我正在从MainActivity调用SubActivity,在该SubActivity中,我必须在MainActivity中调用方法。如果我通过使用
MainActivity test = new MainActivity();
...
test.method("test");
我收到致命提示“无法启动活动” NullPointerException。
我也试过
MainActivity.method("test")
,但这也行不通。通过MainActivity.booleanVariable = true;
可以在MainActivity中更改变量什么会导致NullPointerException?我会错过一些我现在还盲目的基础知识吗?
最佳答案
永远不要像这样实例化Activity
MainActivity test = new MainActivity();
使用
Intent
调用Activity
。现在...我正在从MainActivity调用SubActivity,在该SubActivity中,我必须在MainActivity中调用方法。
如果它是子
Activity
,则表示它是extends MainActivity
。如果是这种情况,那么您可以执行以下操作@Override
public returnType myMethod(params) // where returnType is int, boolean, void etc...
// and params are parameters the method takes (if any)
{
super.myMethod(params);
// other code if needed
}
如果子
Activity
没有extends MainActivity
,请详细说明为什么需要这样做,我们可以帮助您找到更好的方法。编辑
通过阅读上面的评论(“ ...在我的MainActivity中用onActivityResult捕获它”),我认为您对
startActivityForResult()
的工作方式感到困惑,并且一开始可能很棘手。如果你打电话Intent i = new Intent(SecondActivity.this, FirstActivity.class);
// put extras if needed
starActivityForResult(i);
在第二个
Activity
中,然后onActivityResult()
也将进入第二个Activity
。当您在此处调用FirstActivity
时,将从setResult()
调用它。