Spanish [SOLUCIONADO] Como adicionar Iconos a la Barra Superior ?

vbmundo

Well-Known Member
Licensed User
Hola

Me ha gustado mucho el Material Design y ahora mi futura APP esta teniendo un diseño superador.

Pero me interesa esto de adicionar ICONOS (no solo menues) a la barra superior.

Si bien en la página (en Ingles) donde explican como adicionar los 2 íconos de "+1" y "Recargar" esta el código, no puedo ver como se hace para añadir la Flecha que figura a la izquierda y que visualmente invita a retroceder al Activity anterior

miren

ExampleApp.png


A eso me refiero.. como se hace para añadir esa flecha apuntando a la izquierda ?

Gracias
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Hola

B4X:
dim NombredelObjeto as StdActionBar
NombredelObjeto.ShowUpIndicator = True

saludos
 

rscheel

Well-Known Member
Licensed User
Longtime User
Genial amigo

Y no hace falta programar su evento o si ? es automático ?

Gracias

Para programar el el evento es de la siguiente manera

B4X:
Sub  NombredeActionBar_NavigationItemClick
     Activity.Finish
End Sub
 

vbmundo

Well-Known Member
Licensed User
Porque me da error

B4X:
Error occurred on line: 45 (Cheques)
java.lang.NullPointerException
    at de.amberhome.objects.appcompat.ACActionBar.setShowUpIndicator(ACActionBar.java:116)
    at electro.merlo.cheques._activity_resume(cheques.java:434)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:511)
    at anywheresoftware.b4a.shell.Shell.runMethod(Shell.java:703)
    at anywheresoftware.b4a.shell.Shell.raiseEventImpl(Shell.java:337)
    at anywheresoftware.b4a.shell.Shell.raiseEvent(Shell.java:247)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:511)
    at anywheresoftware.b4a.ShellBA.raiseEvent2(ShellBA.java:134)
    at anywheresoftware.b4a.BA.raiseEvent(BA.java:153)
    at electro.merlo.cheques.afterFirstLayout(cheques.java:108)
    at electro.merlo.cheques.access$000(cheques.java:17)
    at electro.merlo.cheques$WaitForLayout.run(cheques.java:80)
    at android.os.Handler.handleCallback(Handler.java:615)
    at android.os.Handler.dispatchMessage(Handler.java:92)
    at android.os.Looper.loop(Looper.java:137)
    at android.app.ActivityThread.main(ActivityThread.java:4947)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:511)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805)
    at dalvik.system.NativeStart.main(Native Method)
** Service (starter) Destroy **
** Activity (main) Resume **
** Activity (main) Pause, UserClosed = false **
** Activity (main) Resume **
** Activity (main) Pause, UserClosed = false **

Y las lineas donde da ese error son estas

B4X:
dim Objeto as StdActionBar
Objeto.ShowUpIndicator = True
 

rscheel

Well-Known Member
Licensed User
Longtime User
Porque me da error

B4X:
Error occurred on line: 45 (Cheques)
java.lang.NullPointerException
    at de.amberhome.objects.appcompat.ACActionBar.setShowUpIndicator(ACActionBar.java:116)
    at electro.merlo.cheques._activity_resume(cheques.java:434)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:511)
    at anywheresoftware.b4a.shell.Shell.runMethod(Shell.java:703)
    at anywheresoftware.b4a.shell.Shell.raiseEventImpl(Shell.java:337)
    at anywheresoftware.b4a.shell.Shell.raiseEvent(Shell.java:247)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:511)
    at anywheresoftware.b4a.ShellBA.raiseEvent2(ShellBA.java:134)
    at anywheresoftware.b4a.BA.raiseEvent(BA.java:153)
    at electro.merlo.cheques.afterFirstLayout(cheques.java:108)
    at electro.merlo.cheques.access$000(cheques.java:17)
    at electro.merlo.cheques$WaitForLayout.run(cheques.java:80)
    at android.os.Handler.handleCallback(Handler.java:615)
    at android.os.Handler.dispatchMessage(Handler.java:92)
    at android.os.Looper.loop(Looper.java:137)
    at android.app.ActivityThread.main(ActivityThread.java:4947)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:511)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805)
    at dalvik.system.NativeStart.main(Native Method)
** Service (starter) Destroy **
** Activity (main) Resume **
** Activity (main) Pause, UserClosed = false **
** Activity (main) Resume **
** Activity (main) Pause, UserClosed = false **

Y las lineas donde da ese error son estas

B4X:
dim Objeto as StdActionBar
Objeto.ShowUpIndicator = True

Es por que que después que la declaras tienes que Objeto.Initialize
 

vbmundo

Well-Known Member
Licensed User
Aparentemente no es ese el problema

Ahora tengo el siguiente código y da el mismo error.

B4X:
    Dim Objeto2 As StdActionBar
    Objeto2.initialize("BarraEventos")
    Objeto2.ShowUpIndicator = True

Puede ser que haya leído que esta funcionalidad no esta disponible para Android 5 ? (es una pregunta complementaria, no tiene nada que ver con el fallo)
 

rscheel

Well-Known Member
Licensed User
Longtime User
Aparentemente no es ese el problema

Ahora tengo el siguiente código y da el mismo error.

B4X:
    Dim Objeto2 As StdActionBar
    Objeto2.initialize("BarraEventos")
    Objeto2.ShowUpIndicator = True

Puede ser que haya leído que esta funcionalidad no esta disponible para Android 5 ? (es una pregunta complementaria, no tiene nada que ver con el fallo)

Estimado el código debería quedar así, debe leer mejor lo que uno le comenta.

B4X:
Dim Objeto2 As StdActionBar
Objeto2.Initialize
Objeto2.ShowUpIndicator = True
 

vbmundo

Well-Known Member
Licensed User
Amigo

Debe leer mejor lo que responde... jeje

MISSING PARAMETER

El método INITIALIZE requiere de un parámetro.. en este caso. un nombre de Evento

StdActionBar.jpg
 

rscheel

Well-Known Member
Licensed User
Longtime User
Amigo

Debe leer mejor lo que responde... jeje

MISSING PARAMETER

El método INITIALIZE requiere de un parámetro.. en este caso. un nombre de Evento

StdActionBar.jpg
Después de mirar detenidamente me di cuenta que estas usando la librería equivocada :)

B4X:
Sub Globals
    Private BarraEstado1 As ACToolBarDark 'esto es de la barra de estado que tengas en el diseñador
    Dim ABHelper As ACActionBar
End Sub

Sub Activity_Create(FirstTime As Boolean)
    Activity.LoadLayout("layoutsup")
    BarraEstado1.SetAsActionBar
    BarraEstado1.InitMenuListener
    ABHelper.Initialize
    ABHelper.ShowUpIndicator = True
End Sub

Sub  BarraEstado1_NavigationItemClick
     Activity.Finish
End Sub

Usa este código espero te sirva.
 

vbmundo

Well-Known Member
Licensed User
Anduvo perfecto amigo !!

y a no enojarse eh !! que nos llena la cara de arrugas !! jaja

Un fuerte abrazo

PD: aunque no lo parezca, de 10 cosas que leo y busco, solo pregunto 1.. las otras 9 las encuentro por mi cuenta.

Saludos
 
Top