Spanish [Solucionado] No existe android support v7

angel_

Well-Known Member
Licensed User
Longtime User
Tengo el siguiente problema que no he explicado suficientemente bien en el foro en inglés:

Trato de aplicar lo mismo que se indica en este hilo:

Cuando creo la clase con el activity añado la línea siguiente para, entre otras cosas, poder cambiar a modo oscuro:
B4X:
#Extends: android.support.v7.app.AppCompatActivity

Pero al compilar aparece el siguiente error:
B4X:
javac 1.8.0_201
src\com\...\aaa.java:9: error: package android.support.v7.app does not exist
public class aaa extends android.support.v7.app.AppCompatActivity implements BA.SubDelegator{
                                                             ^
Note: src\com\...\starter.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
1 error

Tengo la v9.80 y descargado Appcompat 4.0 (he aplicado Jetifier) como librería adicional, esta misma línea la tengo en Main, si oculto esta línea en la clase, el programa se ejecuta sin problemas a pesar de tener la misma línea en el Main, esto es lo que más me desconcierta.

¿Alguien tiene alguna sugerencia o le ha pasado algo parecido?
 

josejad

Expert
Licensed User
Longtime User
Hola:

La verdad es que es un poco lioso, porque no sabemos exactamente qué estás intentando hacer.
¿Puedes subir tu proyecto a ver si nos da el mismo error?
¿Te funciona el ejemplo de AppCompact tal cual, sin lo que indicas de la clase y eso?

saludos,
 

angel_

Well-Known Member
Licensed User
Longtime User
Hola José,

Subo el archivo con el ejemplo del primer hilo al que le he añadido AppCompat y #Extends, este es el error completo:

B4X:
B4A Version: 9.80
Java Version: 8
Parsing code.    (0.20s)
Building folders structure.    (0.07s)
Running custom action.    (0.07s)
Compiling code.    (1.24s)
Compiling layouts code.    (0.01s)
Organizing libraries.    (0.00s)
    (AndroidX SDK)
Generating R file.    (1.63s)
Compiling debugger engine code.    (4.17s)
Compiling generated Java code.    Error
javac 1.8.0_201
src\b4a\example\guessmynumber.java:9: error: package android.support.v7.app does not exist
public class guessmynumber extends android.support.v7.app.AppCompatActivity implements BA.SubDelegator{
                                                         ^
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
1 error

El ejemplo está en el siguiente enlace, no me deja subirlo por el peso, las carpeta B4i y B4j no afectan:
 

josejad

Expert
Licensed User
Longtime User
Efectivamente tu proyecto da error, y el original no, así que parece que no has copiado bien el ejemplo de AppCompact.
Solo he abierto el ejemplo original (de AppCompat) y el tuyo para ver las diferencias.

Quita la línea de dónde la tienes y ponla abajo, y bórrala de la clase:
B4X:
#Region  Project Attributes
    #ApplicationLabel: B4A Example
    #VersionCode: 1
    #VersionName:
    'SupportedOrientations possible values: unspecified, landscape or portrait.
    #SupportedOrientations: portrait
    #CanInstallToExternalStorage: False
   
    #Extends: android.support.v7.app.AppCompatActivity     '<------------- QUITA ESTA LÍNEA DE AQUÍ, Y BÓRRALA DE LA CLASE
#End Region

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

#Extends: android.support.v7.app.AppCompatActivity   '<------------- PON LA LÍNEA AQUÍ

Y ya tu ejemplo se ejecuta correctamente.
 

angel_

Well-Known Member
Licensed User
Longtime User
El problema es que así no tiene efecto #Extends: android.support.v7...

He conseguido posible solución agregando un activity a modo de plantilla donde cargo cada clase y de esta forma consigo aplicar #Extends: ...

Algo similar a esto:
Main:
Sub label1_Click
    StartActivity("TemplateLayout")
    CallSubDelayed(TemplateLayout, "Class1_Click")
End Sub
Sub label2_Click
    StartActivity("TemplateLayout")
    CallSubDelayed(TemplateLayout, "Class2_Click")
End Sub

ActivityTemplate:
#Region  Activity Attributes
    #Extends: android.support.v7.app.AppCompatActivity
#End Region

Sub Activity_Create(FirstTime As Boolean)
    Activity.LoadLayout("TemplateLayout")
End Sub

Sub Class1_Click
    Dim Class1 As Class1
    Class1.Initialize(Activity)
End Sub

Sub Class2_Click
    Dim Class2 As Class2
    Class2.Initialize(Activity)
End Sub

No sé si hay alternativa mejor.
 
Last edited:

josejad

Expert
Licensed User
Longtime User
Hola:

El problema es que así no tiene efecto #Extends: android.support.v7...
Lo siento, no entiendo a qué te refieres con esa frase. Lo único que pude ver con lo que te puse, es que no da error, y el tema es oscuro.
 

angel_

Well-Known Member
Licensed User
Longtime User
Al poner la línea donde indicas no se mantiene el modo oscuro al cargar el layout, adjunto un ejemplo de lo que estaba buscando donde creo que se puede ver mejor el problema
 

Attachments

  • ejemplo.zip
    15.9 KB · Views: 183
Top