多个后退键按下“禁用”面板按钮

时间:2011-10-23 12:45:07

标签: basic4android

好的,我将尝试尽可能简单地解释这个!我敢肯定我忽视了一些简单的事情 - 但是他们一直盯着屏幕太长时间无法识别。一如既往,感谢您的帮助!

在我的主要活动中,我有:

Sub Activity_KeyPress (KeyCode As Int) As Boolean 'handles the back key and the menu key
    If KeyCode = KeyCodes.KEYCODE_BACK Then 'back keySub Activity_KeyPress (KeyCode As Int) As Boolean                          
        Quitandsave
    End If
    Return True
End Sub

Sub-Quitandsave为当前活动添加了一个面板视图(在Main中) - 在面板上有两个按钮 - 是退出和不(改变主意并返回应用程序)。

我发现当按下后退键时 - 面板显示正确,是/否按钮正常工作。

但是,如果从初始后退按键可以看到面板,然后再次按下后退键(故意或意外) - 是按钮仍然有效(面板删除,文件保存,应用程序退出),但没有按钮没有 - 就像它被冻结 - 并且面板不会被移除。是因为初始化? ......还是别的什么?

这是我的是/否按钮代码:

Sub quitsavebtn1_Click ' yes - quit and save
    WriteMapSavePage 'calls a sub that writes map to int or external space
    Activity.Finish ' exit the application
End Sub

Sub quitsavebtn2_Click 'no - don't quit and save
    quitsavepnl.RemoveView 'remove the panel to continue using app
End Sub

在我的Quitandsave Sub中:

Sub Quitandsave
    quitsavepnl.Initialize("quitsavepnl")
    .... code here to set colors,font etc.
    Activity.AddView(quitsavepnl,15dip,15dip, 50%x, 50%y)
    .... code here to add buttons to panel etc.
    quitsavepnl.Visible = True
End Sub

3 个答案:

答案 0 :(得分:2)

RemoveView没有做你想象的那样。它只是将Panel与其父母分开。使用Msgbox会更好,但你可以试试quitsavepnl.Visible = False。

答案 1 :(得分:1)

尝试删除此行,看看它是否有效:

quitsavepnl.RemoveView

点击事件结束后,您可能需要一个Timer来删除视图。

答案 2 :(得分:0)

尝试将函数quitsavebtn2_Click更改为以下内容:

Sub quitsavebtn2_Click ' no - don't quit and save
    If quitsavepnl.IsInitialized then
        quitsavepnl.Visible = false ' remove the panel to continue using app

    End if

End Sub

...和QuitandSave函数如下:

Sub QuitandSave
    If Not(quitsavepnl.IsInitialized) then
        quitsavepnl.Initialize("quitsavepnl")
        ' .... code here to set colors,font etc.

        Activity.AddView(quitsavepnl, 15dip, 15dip, 50%x, 50%y)
        ' .... code here to add buttons to panel etc.

    End If

    If quitsavepnl.IsInitialized then
        quitsavepnl.Visible = True

    End If

End Sub

使上面的代码如此高效的原因在于它适用于Java:

  • 面板将一直存在,直到Java的垃圾收集器删除了 面板释放内存。
  • 下次将重新创建Panel QuitandSave被称为。
相关问题