Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


La interfaz de usuario de Tablet no funciona en mi aplicación

Estoy tratando de crear una aplicación que tiene dos diferentes interfaces de usuario para tablets y teléfonos, y estoy usando fragmentos para implementar esto. He creado dos archivos xml separados para cada diseño de tableta y teléfono y ambos se llaman activity_main.xml, con el diseño del teléfono colocado en la carpeta res / layout y el diseño de la tableta que se coloca en la carpeta res / layout-sw600dp.

Sin embargo, cuando intento ejecutar mi aplicación en un emulador de Nexus 10 (Android Studio), automáticamente va al diseño de teléfono predeterminado. La aplicación no se bloquea o nada, pero sólo se ejecuta en la interfaz de usuario del teléfono cuando se supone que se ejecute en la interfaz de usuario de tableta. No sé qué fuente de este error podría ser y por lo que cualquier ayuda sería apreciada.

  • Error del apretón de manos del emulador http-proxy SSL de Android
  • Android: Bitmap recycle () ¿cómo funciona?
  • ¿Biblioteca de animación de Android?
  • Android: adjunta datos a las vistas
  • ¿Cómo puedo cambiar el color de fondo de la ActionBar de una ActionBarActivity usando XML?
  • El resultado Wearable.NodeApi.getConnectedNodes nunca se llama
  • He aquí una actualización, he intentado cambiar el nombre de la carpeta a res / layout-large-mdpi, pero todavía no encontró ningún cambio. ¿Es posible que tenga algo que ver con el emulador?

    Aquí está mi manifiesto:

    <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.androidattack.www.sunshine" > <uses-permission android:name="android.permission.INTERNET" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.androidattack.www.sunshine.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="com.androidattack.www.sunshine.DetailActivity" android:label="@string/title_activity_detail" android:parentActivityName="com.androidattack.www.sunshine.MainActivity" > <meta-data android:name="android.support.PARENT_ACTIVITY" android:value="com.androidattack.www.sunshine.MainActivity" /> </activity> <activity android:name="com.androidattack.www.sunshine.SettingsActivity" android:label="@string/title_activity_settings" android:parentActivityName="com.androidattack.www.sunshine.MainActivity" > <meta-data android:name="android.support.PARENT_ACTIVITY" android:value="com.androidattack.www.sunshine.MainActivity" /> </activity> <provider android:authorities="com.androidattack.www.sunshine" android:name=".data.WeatherProvider" /> </application> </manifest> 

    Sw600dp diseño:

     <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent" android:divider="?android:attr/dividerHorizontal" android:baselineAligned="false" tools:context="com.androidattack.www.sunshine.MainActivity"> <fragment android:layout_width="0dp" android:layout_height="fill_parent" android:name="com.androidattack.www.sunshine.ForecastFragment" android:id="@+id/fragment_forecast" android:layout_gravity="center_vertical" android:layout_weight="1" /> <FrameLayout android:layout_width="0dp" android:layout_height="fill_parent" android:layout_weight="2" android:id="@+id/weather_detail_container"> </FrameLayout> </LinearLayout> 

    Disposición normal:

     <fragment xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/fragment_forecast" android:name="com.androidattack.www.sunshine.ForecastFragment" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginLeft="16dp" android:layout_marginRight="16dp" tools:context="com.androidattack.www.sunshine.ForecastFragment" tools:ignore="MergeRootFrame" tools:layout="@android:layout/list_content" /> 

    Y finalmente esta es mi clase MainActivity.java:

     /* * Copyright (C) 2014 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.androidattack.www.sunshine; import android.content.Intent; import android.content.SharedPreferences; import android.net.Uri; import android.os.Bundle; import android.preference.PreferenceManager; import android.support.v7.app.ActionBarActivity; import android.util.Log; import android.view.Menu; import android.view.MenuItem; public class MainActivity extends ActionBarActivity { private final String LOG_TAG = MainActivity.class.getSimpleName(); private boolean mTwoPane; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); if (findViewById(R.id.weather_detail_container) != null) { // Tablet view mTwoPane = true; // In two-pane mode, show the detail view by adding // or replacing the detail fragment using a // fragment transaction. if (savedInstanceState == null) { getSupportFragmentManager().beginTransaction() .replace(R.id.weather_detail_container, new DetailFragment()) .commit(); } } else { // Phone View mTwoPane = false; } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); if (id == R.id.action_settings) { startActivity(new Intent(this, SettingsActivity.class)); return true; } if (id == R.id.action_map) { openPreferredLocationInMap(); return true; } return super.onOptionsItemSelected(item); } private void openPreferredLocationInMap() { SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this); String location = sharedPrefs.getString( getString(R.string.pref_location_key), getString(R.string.pref_location_default)); // Using the URI scheme for showing a location found on a map. This super-handy // intent can is detailed in the "Common Intents" page of Android's developer site: // http://developer.android.com/guide/components/intents-common.html#Maps Uri geoLocation = Uri.parse("geo:0,0?").buildUpon() .appendQueryParameter("q", location) .build(); Intent intent = new Intent(Intent.ACTION_VIEW); intent.setData(geoLocation); if (intent.resolveActivity(getPackageManager()) != null) { startActivity(intent); } else { Log.d(LOG_TAG, "Couldn't call " + location + ", no receiving apps installed!"); } } } 

  • ¿Cómo se crean Fragmentos de preferencias y preferencias en Android?
  • Cómo detectar cuándo se responde o se rechaza el teléfono
  • Cómo almacenar en búfer una polilínea en Android o dibujar un polígono alrededor de una polilínea?
  • Android autofit mode causando problemas con el ancho css en la página web
  • Cómo implementar 3D Secure (Verified by Visa / MasterCard SecureCode) en la aplicación móvil nativa (por ejemplo, IOS)
  • Crashlytics deprecating logException () ¿cuál es el reemplazo?
  • 4 Solutions collect form web for “La interfaz de usuario de Tablet no funciona en mi aplicación”

    Para mí, el código era correcto, pero el problema era con el emulador. Si configuras tu emulador No skin , debería funcionar. ¡Quita esa piel!

    ¿Has probado lo que sucede con el diseño cuando gira el dispositivo? (Por ejemplo, como por el proyecto de sol que necesita para crear tanto el diseño-sw600dp-puerto y layout-sw600dp)

    Layout-sw600dp es para 7 pulgadas de tableta / emulador

    Layout-sw720dp es para 10 pulgadas de tableta / emulador

    El uso de layout-xhdpi funcionará para este escenario específico y un emulador de tableta Nexus 7 o 10 para Nanodegree. Nunca podría conseguir el diseño-sw600dp para cargar correctamente en mi emulador y en lugar de eso actualmente mantengo Sunshine con un layout-xhdpi y un layout-sw600dp con el mismo activity_main.xml.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.