在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()
返回任何内容
答案 0 :(得分:1)
要以正确的方式从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));
}
希望有帮助!