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.
}