首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Android泄密窗口

Android泄密窗口
EN

Stack Overflow用户
提问于 2015-11-05 09:16:03
回答 2查看 237关注 0票数 1

我正在尝试在活动结束前显示一个对话框。我显示了对话框,然后按下OK按钮,活动就被关闭了。但我发现窗户漏水了。这是我的密码。

主要活动

代码语言:javascript
运行
复制
    @Override
    public void onBackPressed(){
         FragmentManager fm = getFragmentManager();
        if (fm.getBackStackEntryCount() > 0) {
            Log.i("MainActivity", "popping backstack");
            fm.popBackStack();
        } else {
            MyAlertDialog dialog=new MyAlertDialog(this);
            dialog.displayDialog("Exit", "Do you wish to exit application?",0);
            super.onBackPressed();
        }
    } 

对话类

代码语言:javascript
运行
复制
public void displayDialog(String title,String message,final int flag)
{
     AlertDialog.Builder builder=new AlertDialog.Builder(context);
     builder.setTitle(title)
         .setMessage(message);
        builder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {              
            @Override
            public void onClick(DialogInterface dialog, int which) 
             {
                dialog.dismiss();
                 passIntent(flag);
            }
        });

        builder.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {              
            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();
            }
        });

     AlertDialog dialog=builder.create();
    dialog.show();
}


public void passIntent(int flag)
{
    switch(flag)
     {
     case 0:
        ((Activity) context).finish();
        break;
    }
}

这是我的错误

代码语言:javascript
运行
复制
11-05 13:48:23.935: E/WindowManager(1353): android.view.WindowLeaked: Activity com.mcommerce.main.MainActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{26da0ed7 V.E..... R.....ID 0,0-480,284} that was originally added here
11-05 13:48:23.935: E/WindowManager(1353):  at android.view.ViewRootImpl.<init>(ViewRootImpl.java:363)
11-05 13:48:23.935: E/WindowManager(1353):  at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:271)
11-05 13:48:23.935: E/WindowManager(1353):  at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:85)
11-05 13:48:23.935: E/WindowManager(1353):  at android.app.Dialog.show(Dialog.java:298)
11-05 13:48:23.935: E/WindowManager(1353):  at com.mcommerce.dialog.MyAlertDialog.displayDialog(MyAlertDialog.java:63)
11-05 13:48:23.935: E/WindowManager(1353):  at com.mcommerce.main.MainActivity.onBackPressed(MainActivity.java:256)
11-05 13:48:23.935: E/WindowManager(1353):  at android.app.Activity.onKeyUp(Activity.java:2456)
11-05 13:48:23.935: E/WindowManager(1353):  at android.view.KeyEvent.dispatch(KeyEvent.java:2643)
11-05 13:48:23.935: E/WindowManager(1353):  at android.app.Activity.dispatchKeyEvent(Activity.java:2707)
11-05 13:48:23.935: E/WindowManager(1353):  at android.support.v7.internal.view.WindowCallbackWrapper.dispatchKeyEvent(WindowCallbackWrapper.java:49)
11-05 13:48:23.935: E/WindowManager(1353):  at android.support.v7.app.AppCompatDelegateImplBase$AppCompatWindowCallbackBase.dispatchKeyEvent(AppCompatDelegateImplBase.java:258)
11-05 13:48:23.935: E/WindowManager(1353):  at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:2276)
11-05 13:48:23.935: E/WindowManager(1353):  at android.view.ViewRootImpl$ViewPostImeInputStage.processKeyEvent(ViewRootImpl.java:4020)
11-05 13:48:23.935: E/WindowManager(1353):  at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:3982)
11-05 13:48:23.935: E/WindowManager(1353):  at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3544)
11-05 13:48:23.935: E/WindowManager(1353):  at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3597)
11-05 13:48:23.935: E/WindowManager(1353):  at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3563)
11-05 13:48:23.935: E/WindowManager(1353):  at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3680)
11-05 13:48:23.935: E/WindowManager(1353):  at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3571)
11-05 13:48:23.935: E/WindowManager(1353):  at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3737)
11-05 13:48:23.935: E/WindowManager(1353):  at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3544)
11-05 13:48:23.935: E/WindowManager(1353):  at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3597)
11-05 13:48:23.935: E/WindowManager(1353):  at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3563)
11-05 13:48:23.935: E/WindowManager(1353):  at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3571)
11-05 13:48:23.935: E/WindowManager(1353):  at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3544)
11-05 13:48:23.935: E/WindowManager(1353):  at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3597)
11-05 13:48:23.935: E/WindowManager(1353):  at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3563)
11-05 13:48:23.935: E/WindowManager(1353):  at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3713)
11-05 13:48:23.935: E/WindowManager(1353):  at android.view.ViewRootImpl$ImeInputStage.onFinishedInputEvent(ViewRootImpl.java:3874)
11-05 13:48:23.935: E/WindowManager(1353):  at android.view.inputmethod.InputMethodManager$PendingEvent.run(InputMethodManager.java:2208)
11-05 13:48:23.935: E/WindowManager(1353):  at android.view.inputmethod.InputMethodManager.invokeFinishedInputEventCallback(InputMethodManager.java:1849)
11-05 13:48:23.935: E/WindowManager(1353):  at android.view.inputmethod.InputMethodManager.finishedInputEvent(InputMethodManager.java:1840)
11-05 13:48:23.935: E/WindowManager(1353):  at android.view.inputmethod.InputMethodManager$ImeInputEventSender.onInputEventFinished(InputMethodManager.java:2185)
11-05 13:48:23.935: E/WindowManager(1353):  at android.view.InputEventSender.dispatchInputEventFinished(InputEventSender.java:141)
11-05 13:48:23.935: E/WindowManager(1353):  at android.os.MessageQueue.nativePollOnce(Native Method)
11-05 13:48:23.935: E/WindowManager(1353):  at android.os.MessageQueue.next(MessageQueue.java:143)
11-05 13:48:23.935: E/WindowManager(1353):  at android.os.Looper.loop(Looper.java:122)
11-05 13:48:23.935: E/WindowManager(1353):  at android.app.ActivityThread.main(ActivityThread.java:5257)
11-05 13:48:23.935: E/WindowManager(1353):  at java.lang.reflect.Method.invoke(Native Method)
11-05 13:48:23.935: E/WindowManager(1353):  at java.lang.reflect.Method.invoke(Method.java:372)
11-05 13:48:23.935: E/WindowManager(1353):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
11-05 13:48:23.935: E/WindowManager(1353):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)

我提到了很多的链接,但我仍然不能解决这个问题。任何人都请帮忙。提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-11-05 09:25:19

错误:

com.android.internal.policy.impl.PhoneWindow$DecorView{26da0ed7 V.E.最初添加的R.....ID 0,0-480,284}

您将得到此错误,因为Dialog在完成Activity后显示。

您的对话框将显示,并调用super.onBackPressed(),这将完成您的活动。

尝尝这个

代码语言:javascript
运行
复制
MyAlertDialog dialog=new MyAlertDialog(this);
dialog.displayDialog("Exit", "Do you wish to exit application?",0);

而不是

代码语言:javascript
运行
复制
MyAlertDialog dialog=new MyAlertDialog(this);
dialog.displayDialog("Exit", "Do you wish to exit application?",0);
super.onBackPressed();

因此,请删除super.onBackPressed(),然后它将解决您的问题。

票数 0
EN

Stack Overflow用户

发布于 2015-11-05 09:27:42

您的问题似乎是由于您在显示Activity后立即离开Dialog造成的。

代码语言:javascript
运行
复制
@Override
public void onBackPressed(){
     FragmentManager fm = getFragmentManager();
    if (fm.getBackStackEntryCount() > 0) {
        Log.i("MainActivity", "popping backstack");
        fm.popBackStack();
    } else {
        MyAlertDialog dialog=new MyAlertDialog(this);
        dialog.displayDialog("Exit", "Do you wish to exit application?",0);
        // super.onBackPressed(); // <-- remove this and implement closing of the activity in the Dialog logic
    }
} 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33540546

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档