Italian keycode back

skill27

Member
B4X:
Sub ACToolBarLight1_NavigationItemClick
    Drawer.LeftOpen = Not(Drawer.LeftOpen)
    Drawer.RightOpen = False
End Sub

Sub RightNavigation_Click
    Drawer.RightOpen = Not(Drawer.RightOpen)
    Drawer.LeftOpen = False
End Sub

Sub page_back
    WebView2.Back
    'WebView3.Back
    'WebView4.Back
    'WebView5.Back
    'WebView6.Back
    'WebView7.Back
    'WebView8.Back
    'WebView9.Back
End Sub

Sub Activity_KeyPress (KeyCode As Int) As Boolean
    
    Select KeyCode
        Case KeyCodes.KEYCODE_BACK:
            page_back
            Return True
        Case Else
            Return False
            Activity.LoadLayout("1")
    End Select
    
    
    If KeyCode = KeyCodes.KEYCODE_BACK Then
        If Drawer.LeftOpen Then
            Drawer.LeftOpen = False
            Return True
        End If
        If Drawer.RightOpen Then
            Drawer.RightOpen = False
            Return True
        End If
    
    End If
    Return False
End Sub
 

skill27

Member
B4X:
Sub ACToolBarLight1_NavigationItemClick
    Drawer.LeftOpen = Not(Drawer.LeftOpen)
    Drawer.RightOpen = False
End Sub

Sub RightNavigation_Click
    Drawer.RightOpen = Not(Drawer.RightOpen)
    Drawer.LeftOpen = False
End Sub


Sub Activity_KeyPress (KeyCode As Int) As Boolean
    
    Select KeyCode
        Case KeyCodes.KEYCODE_BACK:
            page_back
            Return True
        Case Else
            Return False
            Activity.LoadLayout("1")
    End Select
    
    
    If KeyCode = KeyCodes.KEYCODE_BACK Then
        If Drawer.LeftOpen Then
            Drawer.LeftOpen = False
            Return True
        End If
        If Drawer.RightOpen Then
            Drawer.RightOpen = False
            Return True
        End If
    
    End If
    Return False
End Sub


Sub page_back
    WebView2.Back
    'WebView3.Back
    'WebView4.Back
    'WebView5.Back
    'WebView6.Back
    'WebView7.Back
    'WebView8.Back
    'WebView9.Back
End Sub
 

udg

Expert
Licensed User
Longtime User
Tralasciamo per ora Drawer.RightOpen che non credo esista nella libreria ufficiale (se non ricordo male aveva un pannello centrale ed uno a sinistra che si animava scorrendo in/out).
Per keypress, desideri intercettare il tasto back e svolgere tutte le seguenti azioni:
- chiudere il Left panel del drawer se è aperto
- tornare indietro di una "pagina" in tutte le webview
- se tutte le webview sono già sulla prima pagina, uscire

B4X:
Sub Activity_KeyPress (KeyCode As Int) As Boolean
   'il select potrebbe essere sostituito da un semplice if KeyCode.KEYCODE_BACK visto che ti interessa solo questo tasto
    Select KeyCode
        Case KeyCodes.KEYCODE_BACK:
            page_back
            If Drawer.LeftOpen Then Drawer.LeftOpen = False 'in realtà basterebbe Drawer.leftOpen = False
           'nel caso esista un RightOpen potresti afre lo stesso anche per esso
            Return True
        Case Else
            Return False
            'Activity.LoadLayout("1")  con questa ricarichi il Layout ad ogni pressione di tasto diversa da Back!
    End Select
End Sub

  
Sub page_back
  if not(Ready2Close) then
    WebView2.Back
    'WebView3.Back
      '....
    'WebView9.Back
  else
      'codice già visto per mostrare messaggio asincrono ed eventuale termine programma
   end if
End Sub

Sub Ready2Close as boolean
' qui dovresti avere una tua funzione che ti dice che tutte le webview sono arrivate al capolinea
' se non ne hai una basata su tuoi criteri, sappi che esiste WebViewExtra (o qualcosa del genere) che è in grado di dire se una certa WV si trova all'inizio della sua history
end sub

ps: sempre che tu abbia davvero utilizzato la B4XDrawer e non la ACToolBar (che personalmente non ho mai utilizzato)...
 

skill27

Member
Tralasciamo per ora Drawer.RightOpen che non credo esista nella libreria ufficiale (se non ricordo male aveva un pannello centrale ed uno a sinistra che si animava scorrendo in/out).
Per keypress, desideri intercettare il tasto back e svolgere tutte le seguenti azioni:
- chiudere il Left panel del drawer se è aperto
- tornare indietro di una "pagina" in tutte le webview
- se tutte le webview sono già sulla prima pagina, uscire

B4X:
Sub Activity_KeyPress (KeyCode As Int) As Boolean
   'il select potrebbe essere sostituito da un semplice if KeyCode.KEYCODE_BACK visto che ti interessa solo questo tasto
    Select KeyCode
        Case KeyCodes.KEYCODE_BACK:
            page_back
            If Drawer.LeftOpen Then Drawer.LeftOpen = False 'in realtà basterebbe Drawer.leftOpen = False
           'nel caso esista un RightOpen potresti afre lo stesso anche per esso
            Return True
        Case Else
            Return False
            'Activity.LoadLayout("1")  con questa ricarichi il Layout ad ogni pressione di tasto diversa da Back!
    End Select
End Sub

 
Sub page_back
  if not(Ready2Close) then
    WebView2.Back
    'WebView3.Back
      '....
    'WebView9.Back
  else
      'codice già visto per mostrare messaggio asincrono ed eventuale termine programma
   end if
End Sub

Sub Ready2Close as boolean
' qui dovresti avere una tua funzione che ti dice che tutte le webview sono arrivate al capolinea
' se non ne hai una basata su tuoi criteri, sappi che esiste WebViewExtra (o qualcosa del genere) che è in grado di dire se una certa WV si trova all'inizio della sua history
end sub

ps: sempre che tu abbia davvero utilizzato la B4XDrawer e non la ACToolBar (che personalmente non ho mai utilizzato)...
ho risolto li grazie mille sei stato gentilissimo, ho un'altro problemino...
qui:
B4X:
Sub Process_Globals

    Dim PicRotationtimer As Timer
End Sub

Sub Globals
    Private ACToolBarLight1 As ACToolBarLight
    Private ToolbarHelper As ACActionBar
    Private Drawer As B4XDrawer
    Private ListView1 As ListView
    
    Private WebView1 As WebView
    
    Private Button1 As Button
    Private Button2 As Button
    Private Button3 As Button
    Private Button4 As Button
    
    Private buttonBack As Button
    
    Private sfondoImage As ImageView
    Private Panel1 As Panel
    
    Dim timer1 As Timer
    
    Dim myImage As Bitmap
    Dim myImage2 As Bitmap
    Dim myImage3 As Bitmap
    Dim myImage4 As Bitmap
    
    Dim Pics() As String
    Private ImageView1 As ImageView
    Dim Counter As Int
End Sub

Sub Activity_Create(FirstTime As Boolean)
    Activity.LoadLayout("Intro")
    timer1.Initialize("timer1", 5000)
    timer1.Enabled = True
    myImage3.Initialize(File.DirAssets, "welcome.png")
    ImageView1.SetBackgroundImage(myImage3)
    ImageView1.Visible = True
    ImageView1.BringToFront
    
    Pics = Array As String("Pulyandservice1.jpg", "Pulyandservice2.jpg", "Pulyandservice7.png", "Pulyandservice5.jpg", "Pulyandservice6.jpg")
                
    PicRotationtimer.Initialize("PicRotationTimer", 4000) '4 seconds delay
    PicRotationtimer.Enabled = True

    Activity.LoadLayout("Main")
    
    Drawer.Initialize(Me, "Drawer", Activity, 300dip)
    Drawer.CenterPanel.LoadLayout("Main")
    ToolbarHelper.Initialize
    ToolbarHelper.ShowUpIndicator = True 'set to true to show the up arrow
    Dim bd As BitmapDrawable
    bd.Initialize(LoadBitmap(File.DirAssets, "hamburger.png"))
    ToolbarHelper.UpIndicatorDrawable =  bd
    ACToolBarLight1.InitMenuListener
    Drawer.LeftPanel.LoadLayout("Left")
    
    myImage.Initialize(File.DirAssets, "pulyandservice.png")
    myImage2.Initialize(File.DirAssets, "button1.png")
    myImage4.Initialize(File.DirAssets, "button1.png")
    
    sfondoImage.SetBackgroundImage(myImage)
    Button1.SetBackgroundImage(myImage2)
    buttonBack.SetBackgroundImage(myImage4)
    buttonBack.Text = "Torna alla Home"
End Sub

mi da questo errore java.lang.RuntimeException: Object should first be initialized (Button).
ma perche? è già inizializzata...non capisco
 
Top