好的,我将尝试尽可能简单地解释这个!我敢肯定我忽视了一些简单的事情 - 但是他们一直盯着屏幕太长时间无法识别。一如既往,感谢您的帮助!
在我的主要活动中,我有:
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
答案 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: