Llamar a diferentes constructores de Java de Scala con Android
Necesito heredar android.support.v4.view.ViewPager
y dos constructores. En Java, se hace por:
class MyViewPager extend android.support.v4.view.ViewPager { public ViewPager(Context context) { super(context); } public ViewPager(Context context, AttributeSet attrs) { super(context, attrs); } }
He buscado en Google y aquí por un tiempo, y algunas personas sugirieron implementar esto en Scala como este:
- Scala Inner Class - No es miembro
- Scala, Android y Eclipse
- Programas ejecutando aapt en android sdk de shell y de sbt
- ¿Hay una manera de determinar si es posible llamar a un dialog.dismiss () sin vacío try-catch bloque?
- Android studio dalvik vm no puede encontrar la clase
import android.support.v4.view.ViewPager trait ViewPagerTrait extends ViewPager { // ...implement ViewPager non-constructor functions here... } object MyViewPager { def apply(context: Context) = new ViewPager(context) with ViewPagerTrait def apply(context: Context, attrs: AttributeSet) = new ViewPager(context, attrs) with ViewPagerTrait }
El código Scala anterior se compila, pero parece que el método apply
no se invoca correctamente cuando Android intenta construir la vista. Creo que es porque cuando el marco de Android analiza el archivo XML y trata de crear el objeto de vista, utiliza la reflexión para encontrar el constructor, por lo que no está utilizando los métodos de apply
- ¿Actores alejados del akka en androide?
- Uso del proyecto Scala con Gradle para Android
- Android Scala y Gradle
- Google Maps API v2 SupportMapFragment dentro de ScrollView - los usuarios no pueden desplazar el mapa verticalmente
- Android, Scala y Proguard
- Scala logra un buen rendimiento en Android? (Junio de 2011)
- Error al ejecutar sbt install-emulator
- ¿Cómo puedo ejecutar las pruebas de Android con sbt?
Como LimbSoup y David mismo ya han dicho, esto es simplemente imposible en Scala. Necesitará escribir la clase en Java.
Así que la mala noticia es que necesitará algún código Java.
La buena noticia es que el compilador de Scala y la mayoría de las herramientas de Scala tienen un soporte muy bueno para las bases de código mixtas de Java / Scala. Las clases de Java y Scala pueden heredar libremente entre sí y el compilador lo resolverá perfectamente. Por lo tanto, no debería encontrarse en una situación en la que se vea obligado a escribir una cantidad sustancial de código en Java.
- Google Drive android API Demos no funcionan correctamente
- OutOfMemoryError inicio volley RequestQueue