Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.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 在外部Android存储中保存文件时出错_Java_Android_Android Permissions_Android Storage - Fatal编程技术网

Java 在外部Android存储中保存文件时出错

Java 在外部Android存储中保存文件时出错,java,android,android-permissions,android-storage,Java,Android,Android Permissions,Android Storage,当我打开活动时,我请求目录权限。一旦许可被允许,我写下文件的名称和内容,然后按下保存按钮。保存文件前会出现一个确认对话框。我在那里选择“是”,然后出现以下错误 2019-07-17 04:29:31.063 17879-17879/com.halimlab.catatanharian E/WindowManager: android.view.WindowLeaked: Activity com.halimlab.catatanharian.InsertAndViewActivity has l

当我打开活动时,我请求目录权限。一旦许可被允许,我写下文件的名称和内容,然后按下保存按钮。保存文件前会出现一个确认对话框。我在那里选择“是”,然后出现以下错误

2019-07-17 04:29:31.063 17879-17879/com.halimlab.catatanharian E/WindowManager: android.view.WindowLeaked: Activity com.halimlab.catatanharian.InsertAndViewActivity has leaked window DecorView@56fdc15[InsertAndViewActivity] that was originally added here
    at android.view.ViewRootImpl.<init>(ViewRootImpl.java:538)
    at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:346)
    at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:94)
    at android.app.Dialog.show(Dialog.java:329)
    at androidx.appcompat.app.AlertDialog$Builder.show(AlertDialog.java:1007)
    at com.halimlab.catatanharian.InsertAndViewActivity.konfirmasiSave(InsertAndViewActivity.java:191)
    at com.halimlab.catatanharian.InsertAndViewActivity.onBackPressed(InsertAndViewActivity.java:197)
    at com.halimlab.catatanharian.InsertAndViewActivity.buatDanUbah(InsertAndViewActivity.java:177)
    at com.halimlab.catatanharian.InsertAndViewActivity$1.onClick(InsertAndViewActivity.java:188)
    at androidx.appcompat.app.AlertController$ButtonHandler.handleMessage(AlertController.java:167)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loop(Looper.java:193)
    at android.app.ActivityThread.main(ActivityThread.java:6739)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:495)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:859)
我在我的
AndroidManifest.xml
中拥有必要的权限

<uses-permission android:name = "android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name = "android.permission.READ_EXTERNAL_STORAGE"/>

您需要修改
onBackPressed
功能,如下所示

@Override
public void onBackPressed() {
    if (!tempCatatan.equals(edtContent.getText().toString()))
        konfirmasiSave();
    else super.onBackPressed(); // Do that in the else part.
}
因为在
konfirmasiSave
函数中,您正在打开一个未关闭的对话框,或者正在对其执行任何操作,因此您正在调用
super.onBackPressed
,该对话框试图返回到上一个活动,从而导致窗口泄漏错误


并在退出之前处理
tempcatan
变量的值,以便
onBackPressed
函数按预期执行

好的,谢谢,但现在的问题是,在我按下OK后,保存确认对话框不断出现,即使我在回答中所述的日志中没有错误,您也需要处理
on backpressed
函数的情况。处理
tempcatan
的值,使其不满足
on backpressed
函数中的
if
条件,并退出活动。希望有帮助!谢谢你的朋友们,他们已经下定决心,知道我能帮上忙真是太好了。:)
@Override
public void onBackPressed() {
    if (!tempCatatan.equals(edtContent.getText().toString()))
        konfirmasiSave();
    else super.onBackPressed(); // Do that in the else part.
}