Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/230.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
Java Cordova插件停止/重新启动活动_Java_Android_Cordova_Cordova Plugins - Fatal编程技术网

Java Cordova插件停止/重新启动活动

Java Cordova插件停止/重新启动活动,java,android,cordova,cordova-plugins,Java,Android,Cordova,Cordova Plugins,我有一个Cordova插件,它使用了这个例子。我想在相机中禁用“后退”按钮 为了做到这一点,我相信片段不能接受后退按钮事件,所以我在插件中添加了一个活动。我可以成功运行插件,相机和活动,禁用后退按钮 但是,当我关闭插件时,会出现以下错误: java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState java.lang.NullPointerException: Attempt to

我有一个Cordova插件,它使用了这个例子。我想在相机中禁用“后退”按钮

为了做到这一点,我相信片段不能接受后退按钮事件,所以我在插件中添加了一个活动。我可以成功运行插件,相机和活动,禁用后退按钮

但是,当我关闭插件时,会出现以下错误:

java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
java.lang.NullPointerException: Attempt to invoke interface method 'android.app.Activity org.apache.cordova.CordovaInterface.getActivity()' on a null object reference
为了解决这个问题,我使用了
commitAllowingStateLoss
而不是
commit
,但是当我第二次打开插件时,它会出现以下错误:

java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
java.lang.NullPointerException: Attempt to invoke interface method 'android.app.Activity org.apache.cordova.CordovaInterface.getActivity()' on a null object reference
我假定我没有正确地停止活动,并允许状态丢失,这会导致第二个错误。我该怎么做

我尝试过这种方法,但没有成功:

我已将代码放在此处的一个分支中:

添加更改的摘要:

plugin.xml

<config-file target="AndroidManifest.xml" parent="/manifest/application">
    <activity android:name="com.example.android.camera2video.MediaCustomActivity" android:label="@string/activity_name" android:theme="@style/Theme.Transparent">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</config-file>
<source-file src="src/android/MediaCustom.java" target-dir="src/com/example/android/camera2video" />
<source-file src="src/android/MediaCustomActivity.java" target-dir="src/com/example/android/camera2video" />
<source-file src="src/android/Camera2VideoFragment.java" target-dir="src/com/example/android/camera2video" />
MediaCustomActivity.java

public static void start(Activity activity) {
    Intent intent = new Intent(activity, MediaCustomActivity.class);
    activity.startActivity(intent);
}

public static void stop(Activity activity) {
    // what can we do here?
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    super.init();

    Window window = this.getWindow();
    window.setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE, WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
}

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        return false;
    }
    return super.onKeyDown(keyCode, event);
}