Pregunta

Intentando establecer la orientación en el archivo de manifiesto, usando un calificador de cadena

android:screenOrientation="@string/orientation"

Funciona en una tableta Asus 4.0, pero falla tanto en una Wildfire 2.1 como en una Galaxy S 4.1.De hecho, el problema es vincular a un recurso. Si se escribe retrato, funciona.

Intenté cambiar los calificadores utilizados en la tableta para realizar pruebas en el teléfono.Esto significa que se utilizan exactamente el mismo código, recursos y diseños para todos los dispositivos.Por lo tanto, no pueden ser errores ortográficos ni problemas de redacción.Pero todavía falla en los teléfonos y no en la tableta.Esto parece ser otro error más en Android.

Da el siguiente error, nada en logcat

Installation error: INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION
Please check logcat output for more details.
Launch canceled!

Sección de manifiesto

<activity
    android:name=".MainActivity"
        android:screenOrientation="@string/orientation"
        android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

Sé que puedo hacerlo mediante programación.Pero hay otro problema con el incendio forestal: no se reinicia de inmediato.En lugar de eso, espera a que se configuren las vistas, etc.Esto no ocurre en los otros dispositivos.

Busqué en Google y encontré algunos otros que usaban los métodos, pero no parecen haber descubierto ningún problema.http://capdroid.wordpress.com/2012/07/21/diferente-orientación-de-pantalla-en-diferente-tamaño-de-pantalla

Gracias

¿Fue útil?

Solución

Intentando establecer la orientación en el archivo de manifiesto, usando un calificador de cadena

Si bien es una cadena cuando la escribe en su editor, AFAIK en realidad se almacena como un número entero en el sistema y, por lo tanto, es poco probable que la conversión de un recurso de cadena sea confiable.Francamente, me sorprende que funcione en esa tableta; es posible que el fabricante del dispositivo haya agregado soporte para esto para manejar una de sus propias aplicaciones.

Si bien puedes usar recursos de cadena en el manifiesto, deben ser cosas que se almacenarán como cadenas (por ejemplo, android:label).

podría podrá hacer que esto funcione con un recurso entero, buscando los valores utilizados para esas constantes (probablemente los mismos que sus equivalentes de Java).

Esto parece ser otro error más en Android.

Para mí, este parece ser otro lugar donde un desarrollador va más allá de los límites del comportamiento documentado y luego se pregunta por qué el comportamiento no documentado no funciona.

Otros consejos

Tuve el mismo problema, y lo he resuelto usando un valor entero en lugar de un valor de cadena y configuración de la orientación en el método "ONCREATE":

Ejemplo:

Valores / strings.xml

<resources>

    <integer name="orientation">1</integer>
...

Valores-SW600DP / STRINGS.XML

<resources>
     <integer name="orientation">0</integer>
</resources>

Luego, en su ondrato:

 @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        this.setRequestedOrientation(getResources().getInteger(R.integer.orientation));

Cada orientación tiene un valor entero, consulte esta página para obtener más detalles: http:// desarrollador.android.com / referencia / android / r.attr.html # screedorientation

Lea el Documento oficial del desarrollador para identificar el formulario de notaciónLos que están indicados por cadenas , al ponerla en un recurso de cadena producirán el error de análisis como se muestra en la pregunta del OP.

y no, no estaría saltando a las conclusiones para clasificarla como un "error", a cada uno a cada uno, algunos fabricantes son libres de implementar su propio mecanismo para manejarlo y otros se adhieren a la forma de Google de lacódigo fuente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top