Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 主活动实例有时会引发运行时异常“;LinphoneActivity尚未实例化;_Android_Runtimeexception_Linphone - Fatal编程技术网

Android 主活动实例有时会引发运行时异常“;LinphoneActivity尚未实例化;

Android 主活动实例有时会引发运行时异常“;LinphoneActivity尚未实例化;,android,runtimeexception,linphone,Android,Runtimeexception,Linphone,我使用Linphone库制作了一个应用程序,我有一个代码可以在MainActivity中引发异常,如下所示: private static MainActivity instance; public static final boolean isInstanciated() { return instance != null; } public static final MainActivity instance() { if (instance != null) {

我使用Linphone库制作了一个应用程序,我有一个代码可以在MainActivity中引发异常,如下所示:

private static MainActivity instance;

public static final boolean isInstanciated() {
    return instance != null;
}

public static final MainActivity instance() {
    if (instance != null) {
        return instance;
    }
    throw new RuntimeException("LinphoneActivity not instantiated yet");
}
方法实例将用于另一个活动(IncomingCallActivity和Contact Data活动)

如果有来电,则将启动来电活动

if (!LinphoneManager.getInstance().acceptCallWithParams(mCall, params)) {
            // the above method takes care of Samsung Galaxy S
            Toast.makeText(this, R.string.couldnt_accept_call, Toast.LENGTH_LONG).show();
        } else {
            if (!MainActivity.isInstanciated()) {
                return;
            }
            final LinphoneCallParams remoteParams = mCall.getRemoteParams();
            if (remoteParams != null && remoteParams.getVideoEnabled() && LinphoneManager.getInstance().isAutoAcceptCamera()) {
                MainActivity.instance().startVideoActivity(mCall);
            } else {
                MainActivity.instance().startIncallActivity(mCall);
            }
        }
如果用户选择“联系人”菜单,ContactDataActivity将启动

private void doCall(String number) {
        Log.d(TAG, "try to call here: " + number);
        if (Account.isPrepaidRegistered()) {
            MainActivity.instance().requestToCall(number);
        } else {
            Intent intent = new Intent(ContactDataActivity.this, PrepaidRegisterActivity.class);
            startActivity(intent);
        }
    }
其中,每个活动都需要调用MainActivity的实例来调用MainActivity中的方法来请求call或incall

运行应用程序时,logcat将显示:

java.lang.RuntimeException:尚未实例化LinphoneActivity


这很正常,还是我的代码有问题?

不要尝试自己实例化一个活动android框架会为您这样做,如果您希望您的活动是单例的,请在您的意图过滤器中使用lauchmodes而不是单例设计模式lauchMode上有很多很好的教程,和

在另一个活动(传入调用活动)中调用
instance()
method?如下所示:if(!MainActivity.isInstanced()){return;}final LinphoneCallParams remoteParams=mCall.getRemoteParams();如果(remoteParams!=null&&remoteParams.getVideoEnabled()&&LinphoneManager.getInstance().isAutoAcceptCamera()){MainActivity.instance().startVideoActivity(mCall);}其他{MainActivity.instance().startIncallActivity(mCall);}我已经将其放在清单文件中:android:launchMode=“singleTask”,所以我必须删除MainActivity instance()方法?是的,如果单个任务是您试图实现的,但我需要在另一个活动中调用此instance()方法,你能给出另一个解决方案吗?发布所有相关代码并解释你想要实现的目标…如果你试图在活动之间进行通信,请使用本地广播接收器或一些共享数据