0

わかりました、これをできるだけ簡単に説明しようと思います!単純なものを見落としていると確信していますが、画面を見つめている時間が長すぎて識別できません。いつものように、助けてくれてありがとう!

私の主な活動では:

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は、現在のアクティビティ(メイン)にパネルビューを追加します-パネルには2つのボタンがあります-終了するにはyes、いいえ(気が変わってアプリケーションに戻ります)。

私が見つけたのは、戻るキーを押すと、パネルが正しく表示され、はい/いいえボタンが正常に機能することです。

ただし、最初の戻るキーを押してからパネルが表示されているときに、(故意または偶然に)戻るキーをもう一度押すと、[はい]ボタンは引き続き機能します(パネルの削除、ファイルの保存、アプリの終了)。ボタンは(フリーズしているように)動かず、パネルは取り外されません。初期化のせいですか?... または、他の何か?

これが私のyes/noボタンコードです:

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 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
4

3 に答える 3

2

RemoveViewは、あなたが思っているようには機能しません。パネルを親から切り離すだけです。Msgboxを使用する方が良いでしょうが、代わりにquitsavepnl.Visible=Falseを試すことができます。

于 2011-10-23T14:39:49.027 に答える
1

この行を削除してみて、機能するかどうかを確認してください。

quitsavepnl.RemoveView

クリックイベントの終了後にビューを削除するには、タイマーが必要になる場合があります。

于 2011-10-23T14:13:45.957 に答える
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で動作することです。

  • Panelは、JavaのガベージコレクタがPanelを削除してメモリを解放するまで存続します。
  • 次にQuitandSaveが呼び出されたときに、パネルが再作成されます。
于 2013-10-30T10:40:36.733 に答える