Android 应用程序在新 Intent 时不断崩溃
Android App keeps on crashing upon new Intent
所以我得到了这个错误代码:Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference
行:Intent callMode = new Intent(MainActivity.this, IncallActivity.class);
我想做的是在接到电话时设置一个新的 activity。下面的函数应该是 "switch" 到那个 activity.
public void callMode() {
Intent callMode = new Intent(MainActivity.this, IncallActivity.class);
startActivity(callMode);
}
并且它位于 MainActivity 内部 class,onCreate 函数外部。
当我尝试将它放在 onCreate 函数中时(当然没有 public void callMode()
)它起作用了,但这不是目标。
我正在尝试从另一个侦听呼叫的 class 激活这个新的 activity。
public class CallReceiver extends BroadcastReceiver {
IncallActivity incallActivity = new IncallActivity();
public MainActivity mainActivity;
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(TelephonyManager.EXTRA_STATE_OFFHOOK)) {
mainActivity.callMode();
} else if (intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(TelephonyManager.EXTRA_STATE_IDLE)) {
incallActivity.endCallMode();
}
}
}
那么为什么会出现这个错误?
我找到了方法。
您需要在代码中添加一个public static Context context
,然后在onCreate 中执行context = getBaseContext();
从那里您可以从任何 class 启动第二个 activity。
所以我得到了这个错误代码:Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference
行:Intent callMode = new Intent(MainActivity.this, IncallActivity.class);
我想做的是在接到电话时设置一个新的 activity。下面的函数应该是 "switch" 到那个 activity.
public void callMode() {
Intent callMode = new Intent(MainActivity.this, IncallActivity.class);
startActivity(callMode);
}
并且它位于 MainActivity 内部 class,onCreate 函数外部。
当我尝试将它放在 onCreate 函数中时(当然没有 public void callMode()
)它起作用了,但这不是目标。
我正在尝试从另一个侦听呼叫的 class 激活这个新的 activity。
public class CallReceiver extends BroadcastReceiver {
IncallActivity incallActivity = new IncallActivity();
public MainActivity mainActivity;
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(TelephonyManager.EXTRA_STATE_OFFHOOK)) {
mainActivity.callMode();
} else if (intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(TelephonyManager.EXTRA_STATE_IDLE)) {
incallActivity.endCallMode();
}
}
}
那么为什么会出现这个错误?
我找到了方法。
您需要在代码中添加一个public static Context context
,然后在onCreate 中执行context = getBaseContext();
从那里您可以从任何 class 启动第二个 activity。