Aplicación de Android que funciona en el emulador pero no en el dispositivo real

Simplemente escribió esta sencilla aplicación para probar: un botón que muestra la fecha y la hora, y otro botón que selecciona un color aleatorio y lo muestra. Funciona bien en Emulator, pero los botones no hacen nada (no funcionan) cuando intento ejecutar la aplicación en un dispositivo real.

¿Puede alguien ayudarme a entender por qué?

MainActivity.java:

package yuvallevy.allyouneedapp; import android.graphics.Color; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; import android.widget.TextView; import java.util.Date; import java.util.Random; public class MainActivity extends AppCompatActivity { private Button btnShowTime; private Button btnRandomColor; private TextView timeText; private TextView randomColorView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btnRandomColor = (Button) findViewById(R.id.btnRandomColor); btnShowTime = (Button) findViewById(R.id.btnShowTime); timeText = (TextView) findViewById(R.id.timeText); randomColorView = (TextView) findViewById(R.id.randomColorView); btnShowTime.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String currentDataTimeString = java.text.DateFormat.getDateTimeInstance().format(new Date()); timeText.setText(currentDataTimeString); } }); btnRandomColor.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Random rnd = new Random(); int color = Color.argb(255, rnd.nextInt(256), rnd.nextInt(256), rnd.nextInt(256)); randomColorView.setBackgroundColor(color); } }); } } 

activity_main.xml:

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent"> <Button android:id="@+id/btnShowTime" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_toLeftOf="@+id/randomColorView" android:layout_toStartOf="@+id/randomColorView" android:text="Show Time" android:textAppearance="?android:attr/textAppearanceLarge" /> <TextView android:id="@+id/timeText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@+id/btnRandomColor" android:layout_alignParentEnd="true" android:layout_alignParentRight="true" android:layout_alignParentTop="true" android:layout_toEndOf="@+id/btnRandomColor" android:layout_toRightOf="@+id/btnRandomColor" /> <Button android:id="@+id/btnRandomColor" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@id/btnShowTime" android:text="Random Color" android:textAppearance="?android:attr/textAppearanceLarge" /> <TextView android:id="@+id/randomColorView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBottom="@+id/btnRandomColor" android:layout_alignParentEnd="true" android:layout_alignParentRight="true" android:layout_alignTop="@+id/btnRandomColor" android:layout_toRightOf="@+id/btnRandomColor" /> </RelativeLayout> 

AndoirdManifest.xml:

 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="yuvallevy.allyouneedapp" > <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest> 

3 Solutions collect form web for “Aplicación de Android que funciona en el emulador pero no en el dispositivo real”

Sospecho que este problema aparente está relacionado con el atributo android:supportsRtl="true" y los diferentes niveles de API de su dispositivo / emualtor.

Del documento oficial :

android: supportsRtl

Declara si su aplicación está dispuesta a soportar diseños de derecha a izquierda (RTL). Si se establece en true y targetSdkVersion se establece en 17 o superior, varias API de RTL serán activadas y utilizadas por el sistema para que su aplicación pueda mostrar diseños RTL. Si se establece en false o si targetSdkVersion se establece en 16 o inferior , las API de RTL se ignorarán o no tendrán efecto y su aplicación se comportará de la misma independientemente de la dirección de diseño asociada a la opción Locale del usuario. -a derecha).

El valor predeterminado de este atributo es false.

Este atributo se agregó en el nivel 17 de API.

Esto puede causar un comportamiento diferente entre el emualtor y su dispositivo.

Necesita arreglar su diseño según el indicador, o intente quitar este indicador .

No estoy convencido de que el apoyo de derecha a izquierda sea el problema, pero estoy de acuerdo en que los atributos de las colocaciones contradictorias podrían causar problemas imprevistos.

Si yo fuera tú, me desharía de todos los atributos confusos relativos a la colocación, y reemplazaría el RelativeLayout por un LinearLayout vertical más simple que contenga dos diseños horizontales (por favor, no los corte y pegue del código anterior, es mejor escribir esos LinearLayouts desde cero o usar el IDE para generarlos inicialmente)

si se activa Instant Run, esto hace que algunas clases se muevan. Para desactivar Instant Run Vaya a File -> Settings -> Build, Execution, Deployment -> Ejecutar instantáneamente -> desmarque "Habilitar ejecución instantánea"

  • Fallo al intentar instalar APK en el emulador
  • Pegar texto en el portapapeles del emulador de Android con el shell de adb
  • Intel X86 emulador acelerador (instalador HAXM) VT / NX no habilitado
  • No se puede crear un emulador con Android L (API 20)
  • Poner manualmente archivos en la tarjeta SD del emulador de Android
  • Android O (API 26) El emulador de vista previa no se inicia
  • ¿por qué el botón de menú del emulador muestra todas las actividades de mi aplicación?
  • Cómo habilitar GPS en Eclipse Emulator para Android
  • El emulador de Android para siempre
  • Emulador de Android: No se puede iniciar la cámara web para capturar imágenes en el emulador
  • Error de construcción: emulador de emparedado de helado en Ubuntu
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.