android - 如何正确调用活动之间的方法?
问题描述
在 中ActivityA.java
,我有从tryAgain()
中调用该goToGame()
方法的方法ActivityB.java
。
ActivityA.java
public void tryAgain(View view) {
ActivityB activityB = new ActivityB();
activityB.goToGame(view);
}
我收到以下错误:
java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.Context android.content.Context.getApplicationContext()' on a null object reference
因为ActivityB.goToGame()
其中有以下字符串:
Intent intent = new Intent(getApplicationContext(), GameActivity.class);
我认为错误是由于意图activityB.goToGame()
或getApplicationContext()
意图的错误论点造成的。
在类似的问题中,建议的解决方案是使用static
,但我面临着这个解决方案的许多其他问题。
编辑
考虑一下:
我不能
goToGame()
做static
我不能改变这样的
goToGame()
论点View
我不能
goToGame()
退货
解决方案
要以正确的方式从您的 ActivityB 调用方法,您可以执行以下操作
将此添加到您的 ActivityB
public static Intent goToGame(Context context) {
//here do the things you want to
return new Intent(context, GameActivity.class);
}
无论您想在 ActivityB 上打开 GameActivity 的任何位置,都可以使用它
startActivity(ActivityB.goToGame(this));
所以这种风格不对
ActivityB activityB = new ActivityB();
activityB.goToGame(view);
像这样做
public void tryAgain(View view) {
startActivity(ActivityB.goToGame(this));
}
希望能帮助到你!
推荐阅读
- python - flask_uploads:ImportError:无法导入名称“secure_filename”
- shell - UNIX:从分隔的文本文件创建表格格式的输出
- angular - Angular 如何在不同的单元测试中更新模拟数据
- c++ - 以分钟为单位查找本地时区与 GMT 的差异
- r - 从 excel 和 R 映射数据集
- javascript - 如何在javascript中的数组内添加字典
- javascript - 我必须在元素上注册哪种事件类型以跟踪添加子元素
- visual-studio-code - 如何将诸如控制向上/向下的emacs添加到vscode?
- vba - 防止访问表单被刷新
- javascript - 如何防止vue中的鼠标中键默认