Spanish [SOLUCIONADO] Problemas con Material Design

vbmundo

Well-Known Member
Licensed User
Posteo esto aquí porque en definitiva es un problema con Material Design

Mi aplicación directamente no arranca.. "Se ha detenido la aplicación SuperMySQL Pro" .

No hago mas que quitar todo lo que se modificó en el Manifest Editor y en el Activity y funciona todo perfecto.

El problema es que no tengo forma de depurar cual es el problema, porque en el LOG no aparece nada.. y por mas que coloque un Punto de Interrupción en la primera instrucción del Activity_Create no llega ahí... lo probé en un Movil Samsung Galaxy y en una Tablet de 10'- En Ambos hace lo mismo.

No se que hacer.

Que cosas tengo hechas ?

  • Tengo la Libreria AppCompat 3.2
  • Tengo la versión 6.0 de B4A
  • Tengo las lineas en el Manifest Editor colocadas
  • Tengo las siguientes lineas en el Activity
B4X:
#Extends: android.support.v7.app.AppCompatActivity
'Inline Java code to initialize the Menu
#If Java
    public boolean _onCreateOptionsMenu(android.view.Menu menu) {
        if (processBA.subExists("activity_createmenu")) {
            processBA.raiseEvent2(null, true, "activity_createmenu", false, new de.amberhome.objects.appcompat.ACMenuWrapper(menu));
            return true;
        }
        else
            return false;
    }
#End If
 
Last edited:

rscheel

Well-Known Member
Licensed User
Longtime User
Posteo esto aquí porque en definitiva es un problema con Material Design

Mi aplicación directamente no arranca.. "Se ha detenido la aplicación SuperMySQL Pro" .

No hago mas que quitar todo lo que se modificó en el Manifest Editor y en el Activity y funciona todo perfecto.

El problema es que no tengo forma de depurar cual es el problema, porque en el LOG no aparece nada.. y por mas que coloque un Punto de Interrupción en la primera instrucción del Activity_Create no llega ahí... lo probé en un Movil Samsung Galaxy y en una Tablet de 10'- En Ambos hace lo mismo.

No se que hacer.

Que cosas tengo hechas ?

  • Tengo la Libreria AppCompat 3.2
  • Tengo la versión 6.0 de B4A
  • Tengo las lineas en el Manifest Editor colocadas
  • Tengo las siguientes lineas en el Activity
B4X:
#Extends: android.support.v7.app.AppCompatActivity
'Inline Java code to initialize the Menu
#If Java
    public boolean _onCreateOptionsMenu(android.view.Menu menu) {
        if (processBA.subExists("activity_createmenu")) {
            processBA.raiseEvent2(null, true, "activity_createmenu", false, new de.amberhome.objects.appcompat.ACMenuWrapper(menu));
            return true;
        }
        else
            return false;
    }
#End If


En definitiva no es problema de material design si no de como lo estas implementando, de seguro pasaste por alto algo, agregaste el codigo a manifest editor, en el diseñador estas configurando adecuadamente la barra
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Hola Pablo

Yo hice unas pruebas con el tutorial de Rscheel y no tuve problemas, tambien podria deberse ese "se ha detenido..." a algo ajeno a material design. Yo repasaria paso a paso el tutorial, e iria implementando poco a poco hasta que te surja el error. A veces en modo debug tambien sale ese mensaje de "se ha detenido..." y es un problema de sincronismo con el IDE, tambien a veces en debug, sin poner puntos de interrupción te sale el error en rojo. Pero ten cuidado que tambien te puede salir un error en rojo y seguir la aplicación por tener un Try Catch

Saludos
 

vbmundo

Well-Known Member
Licensed User
En definitiva no es problema de material design si no de como lo estas implementando, de seguro pasaste por alto algo, agregaste el codigo a manifest editor, en el diseñador estas configurando adecuadamente la barra

A que te refieres con Configurar Adecuadamente la Barra ?

En tu tutorial no habla de una barra.

Saludos
 

vbmundo

Well-Known Member
Licensed User
Volví a poner todo como dice el tutorial y nada... ni arranca..

les pego mis Activity y mi manifest.

B4X:
#Region  Project Attributes
    #ApplicationLabel: SuperMySQL Pro
    #VersionCode: 1
    #VersionName: 1.0
    'SupportedOrientations possible values: unspecified, landscape or portrait.
    #SupportedOrientations: unspecified
    #CanInstallToExternalStorage: False
#End Region

#Region  Activity Attributes
    #FullScreen: False
    #IncludeTitle: True
#End Region

Sub Process_Globals
    'These global variables will be declared once when the application starts.
    'These variables can be accessed from all modules.

End Sub
#Extends: android.support.v7.app.AppCompatActivity
'Inline Java code to initialize the Menu
#If Java
    public boolean _onCreateOptionsMenu(android.view.Menu menu) {
        if (processBA.subExists("activity_createmenu")) {
            processBA.raiseEvent2(null, true, "activity_createmenu", false, new de.amberhome.objects.appcompat.ACMenuWrapper(menu));
            return true;
        }
        else
            return false;
    }
#End If
Sub Globals
    Private BotonBorrar As Button
    Private BotonModificar As Button
    Private BotonNueva As Button
    Private ListaConexiones As ListView
    Private ItemSeleccionado As Int
    Private lblLongClick As Label
End Sub

Sub Activity_Create(FirstTime As Boolean)
    Activity.LoadLayout("Main")
    Activity.Title=" Super MySQL PRO"
    StartService("MySQL")
End Sub

Sub Activity_Resume
    Starter.Conections.Initialize
    CargoConexiones
End Sub

Sub Activity_Pause (UserClosed As Boolean)
End Sub

Sub ListaConexiones_ItemClick (Position As Int, Value As Object)
    BotonBorrar.Visible=True
    BotonModificar.Visible=True
    ItemSeleccionado=Position
End Sub

Sub ListaConexiones_ItemLongClick (Position As Int, Value As Object)
  
End Sub

Sub BotonNueva_Click
    MySQL.NuevaConec=True
    StartActivity("NuevaConexion")
End Sub

Sub BotonModificar_Click
    Dim Texto As String , valores As List, sf As StringFunctions
    Try
        sf.Initialize
        MySQL.NuevaConec=False
        Texto=ListaConexiones.GetItem(ItemSeleccionado)
        valores=sf.Split(Texto,"|")
        MySQL.MySQL_Nombre=valores.Get(0)
        MySQL.MySQL_Server=valores.Get(1)
        MySQL.MySQL_Port=valores.Get(2)
        MySQL.MySQL_User=valores.Get(3)
        MySQL.MySQL_Password=valores.Get(4)
        StartActivity("NuevaConexion")
    Catch
        Log(LastException)
    End Try
End Sub

Sub BotonBorrar_Click
  
End Sub
Public Sub CargoConexiones
    Try
        Dim sf As StringFunctions
        Dim TextoEncriptado As String, Texto As String
        Dim f As Funciones, Conexiones As List, i As Int, Valores As List  
         If File.Exists(MySQL.Carpeta,"regp5.smql")=True Then
'           File.Delete(MySQL.Carpeta,"regp5.smql")  
           sf.Initialize
           f.Initialize
           TextoEncriptado=File.ReadString(MySQL.Carpeta,"regp5.smql")
           Texto=f.Decrypt(TextoEncriptado)
           Conexiones=sf.split(Texto,",")
         
           Dim CDPressed,CDNormal As ColorDrawable
           CDPressed.Initialize(Colors.Blue,0)  ' Normal color
           CDNormal.Initialize(Colors.Blue,0) 'Selected color
  
           Dim SV As SLLVOnScroll
           SV.Initialize(ListaConexiones,"ListaConexiones",CDPressed,CDNormal)

           ListaConexiones.Clear
           For i = 0 To Conexiones.Size-1
                  Valores.Initialize
                  Valores=sf.split(Conexiones.Get(i),"\|")
               Starter.Conections.Put("Id-"&i,Conexiones.Get(i))
               ListaConexiones.AddTwoLines2(Valores.Get(0),Valores.Get(1),i)
           Next
           If Conexiones.Size>0 Then lblLongClick.Visible=True
        End If
    Catch
        Log(LastException)
    End Try
End Sub

MANIFEST

B4X:
'This code will be applied to the manifest file during compilation.

'You do not need to modify it in most cases.
'See this link for for more information: https://www.b4x.com/forum/showthread.php?p=78136
AddManifestText(
<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="22"/>
<supports-screens android:largeScreens="true"
    android:normalScreens="true"
    android:smallScreens="true"
    android:anyDensity="true"/>)
SetApplicationAttribute(android:icon, "@drawable/icon")
SetApplicationAttribute(android:label, "$LABEL$")
'End of default text.
SetApplicationAttribute(android:theme, "@style/MyAppTheme")

CreateResource(values, theme.xml,
<resources>
    <style name="MyAppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="colorPrimary">#0098FF</item>
        <item name="colorPrimaryDark">#007CF5</item>
        <item name="colorAccent">#AAAA00</item>
        <item name="windowNoTitle">true</item>
        <item name="windowActionBar">false</item>
    </style>
</resources>
)

Tengo el AppCompat 3.2 como libreria añadida.

Tengo el ANDROID SUPPORT REPOSITORY en la versión 35

SEGURAMENTE ME DIGAN QUE EL PROBLEMA NO ES EL MATERIAL DESIGN... PERO SI QUITO TODO ESTO Y VUELVO COMO TENIA TODO ANTES. FUNCIONA SIN PROBLEMAS.


He leído y releído tus instrucciones, y no veo nada que no haya hecho.
 

rscheel

Well-Known Member
Licensed User
Longtime User
Podrías enviar el código para revisarlo, pero ya tendría que ser para mañana.
 

rscheel

Well-Known Member
Licensed User
Longtime User
Vale, te lo envío por Privado.

Estimado mas que palabras, le dejo mi configuración a través de imágenes ya que a mi me funciona correctamente su proyecto.

Captura4.PNG


Captura2.PNG


Captura.PNG


Captura3.PNG


Screenshot_20160803-083126.png Screenshot_20160803-083120.png

Espero haberle ayudado, si es así puede dejar su like, estoy igual que los de youtube :)
 

vbmundo

Well-Known Member
Licensed User
Impecable amigo !!

Espero llegar a casa para revisar los seteos, sobre todo el del Android SDK Manager.

Como cambia el diseño con el Material Design !!

No se podría crear un SUBFORO exclusivo para MATERIAL DESIGN ?

Tengo tanto por preguntar (sobre todo con la Barra superior, a la que quiero añadirle cosas)

Saludos y mil gracias
 

dar2o3

Active Member
Licensed User
Longtime User
Vbmundo, me da la impresión que no te va a funcionar por la versión de android instalada en tu móvil.
 

vbmundo

Well-Known Member
Licensed User
Tengo al versión 4.1.2 y Api Level 16..

Intenté actualizar el Software pero me dice que ya esta todo instalado.

Seguramente deba hacer la actualización mediante la PC.. aunque seguramente mi movil tenga limitaciones que no me permitan las ultimas versiones.

Tendré que cambiar de movil.

jeje
 

vbmundo

Well-Known Member
Licensed User
Vbmundo, me da la impresión que no te va a funcionar por la versión de android instalada en tu móvil.

Cual sería la versión mínima de ANDROID para que pueda funcionar el MATERIAL DESIGN ?

Es que he visto en ejemplos que si no tienes el Lollypop y tienes JellyBeam funciona igual, pero mostrando (por ejemplo) el Theme HOLO.

Yo quiero que funcione...

que debo hacer ? resignarme al Material Design ?

Digo esto porque en mi TABLET veo que tengo la versión 4.4.2

Gracias
 

vbmundo

Well-Known Member
Licensed User
En el tuto de Material Design en Ingles dicen esto

Basic Material Example

In this tutorial we will create a very simple app that uses Material design on Android 5.0+ (Lollipop, Marshmallow, Nougat and above) devices and the normal Holo design on Android 4.0 devices.

Pero en mi caso la APP no se ejecuta.. ni en HOLO ni en nada.. realmente no logro hacerla andar , a pesar de tener todo perfectamente igual como me ha mostrado Rscheel.

y mi Manifest Editor esta así

B4X:
SetApplicationAttribute(android:theme, "@style/MyAppTheme")

CreateResource(values, theme.xml,
<resources>
    <style name="MyAppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="colorPrimary">#0098FF</item>
        <item name="colorPrimaryDark">#007CF5</item>
        <item name="colorAccent">#AAAA00</item>
        <item name="windowNoTitle">true</item>
        <item name="windowActionBar">false</item>
    </style>
</resources>
)
'Holo theme
CreateResource(values, themes.xml,
<resources>
    <style name="MyAppTheme" parent="@android:style/Theme.Holo.Light.DarkActionBar">
    </style>
</resources>
)

Y de hecho, RSCheel ha logrado hacer andar mi APP..

Veré de utilizar los Emuladores que vienen con B4A para ver si logro correr la APP
 

dar2o3

Active Member
Licensed User
Longtime User
vbmundo, comprueba que en en la carpeta (en mi caso) "C:\Program Files\Android\android-sdk\build-tools" SOLO TENGAS LA CARPETA 23.0.3 Y SOLO ESA.

appcompact funciona en jelly beam!!!
 

vbmundo

Well-Known Member
Licensed User
vbmundo, comprueba que en en la carpeta (en mi caso) "C:\Program Files\Android\android-sdk\build-tools" SOLO TENGAS LA CARPETA 23.0.3 Y SOLO ESA.

appcompact funciona en jelly beam!!!

No.. tengo estas

19.1.0
20.0.0
21.1.2
22.0.1
23.0.1

no solo no tengo la 23.0.3 sino que tengo 5 carpetas anteriores.

que hago ?
 

dar2o3

Active Member
Licensed User
Longtime User
Tienes que actualizar la sdk y descargarte esa version, despues create una carpeta con el nombre "anteriores" y mete dentro todas las carpetas menos la 23.0.3 (guardamos las anteriores por si las moscas), compila y a disfrutar...
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Hola Pablo:

Yo he probado el material desing con Android 4 y me funciona.
No se si lo has echo, pero por si las moscas te lo comento:
1) En tu manifest has puesto esto?

B4X:
CreateResource(values, themes.xml,
<resources>
 <style name="MyAppTheme" parent="@android:style/Theme.Holo.Light.DarkActionBar">
 </style>
</resources>
)
Tu dices que lo viste en el post inglés pero no si lo tienes puesto en tu proyecto.

2) Has creado la carpeta resources (en el proyecto), con sus carpetas internas y con los xml dentro? es una obviedad, pero a veces nos centramos en que tenemos unos problemas grandiosos y al final resulta que se nos olvidó lo mas básico.

Saludos
 

dar2o3

Active Member
Licensed User
Longtime User
Esto es lo que pone en el hilo en Inglés:

  1. First copy the AppCompat.jar, AppCompat.aar and AppCompat.xml files to your additional libraries folder.
  2. Start the Android SDK-Manager and download/update the latest Extras->Android Support Repository. Use at least support repository 33!
  3. In Android SDK-Manager be sure that the "Android SDK Build-tools" 23.0.3 is installed! Deinstall all other versions so 23.0.3 is the only one installed! If you leave older versions of build tools installed your compiled app may work on Android 5.0 and above but it will fail on older Android versions like KitKat.
  4. In the B4A IDE in your projects check the AppCompat library on the libraries tab.
  5. Make sure that you reference the latest android.jar in the IDE under the "Tools/Configure Paths" menu. Don't worry. The android.jar is only used for compilation. It does not mean that you can't run your app on lower Android Versions.
  6. If you are updating from a version older than v3.20 then remove the b4a_appcompat resource folder delivered with older versions of this library.
Fíjate en el punto 3, solo la versión 23.0.3

upload_2016-8-4_10-10-52.png
 

dar2o3

Active Member
Licensed User
Longtime User
Creo recordar que yo tuve que "redibujar" todos los controles "ACToolBar" de todos los formularios, pero yo venía de la versión 2 de appcompact, puede que tu no tengas que hacerlo.

Te vuelvo a repetir (sin querer resultar pesado) que yo no tengo android studio instalado y puedo actualizar sin problemas el sdk el unico "truco" para mi (windows 7) es ejecutarlo como administrador.
 
Top