Android: API requise pour utiliser Switch?

Je ne peux pas insérer un Switch dans mon projet en raison de l'erreur suivante:

La vue nécessite le niveau 14 de l'API (la minute actuelle est 8):

  • Envoyer du texte à un contact spécifique (whatsapp)
  • Pourquoi l'éclipse ne peut-elle pas détecter un périphérique Android?
  • Android: convertir String en int
  • Geste dans listview android
  • Le sélecteur de périphérique Android Studio s'affiche avant que Gradle Build ne soit terminé
  • Ajouter un projet ZXing Android comme bibliothèque dans un studio Android
  • Mais dans les propriétés de mon projet, j'utilise la plate-forme 4.1 et l'API de niveau 16. Alors, qu'est-ce qui ne va pas?

  • Google Play Services avec AdMob. Voir les disponibilités?
  • Triage arraylist de string dans android
  • Comment la mise en page Google Maps est-elle animée?
  • Call startActivityForResult from Fragment n'appelle pasActivityResult
  • Convertir la valeur de couleur hexadécimal (#ffffff) en valeur entière
  • Activer les services de localisation pour Android si l'utilisateur choisit l'option Jamais
  • 6 Solutions collect form web for “Android: API requise pour utiliser Switch?”

    Il y a une bonne conférence à ce sujet de Google IO 2012 (à partir de la diapositive 32)

    Voici un exemple détaillé:

    Créez un fichier XML de mise en page séparé pour les versions ICS + en le plaçant dans / res / layout-v14. La structure de fichier résultante ressemblera à ceci:

    res/layout - mainlayout.xml - compound_button.xml res/layout-v14 - compound_button.xml 

    Android recherchera alors des ressources dans le répertoire layout-v14 lorsque votre application est en cours d'exécution sur v14 ou plus.

    Placez une inclusion dans mainlayout.xml qui tirera le composé pertinent_button.xml lorsque l'application est exécutée:

     <include layout="@layout/compound_button" /> 

    Pour la mise en page pré 4.0, nous voulons une case à cocher, alors créez /layout/compound_button.xml comme une fusion comme suit:

     <?xml version="1.0" encoding="utf-8"?> <merge xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <CheckBox android:id="@+id/enabled" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Enable" /> </merge> 

    Et puis pour la mise en page 4.0+, nous voulons un commutateur, alors créez /layout-v14/compound_button.xml comme fusion comme suit:

     <?xml version="1.0" encoding="utf-8"?> <merge 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" > <Switch android:id="@+id/enabled" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Enable" tools:ignore="NewApi" /> </merge> 

    Bien sûr, assurez-vous de définir votre min et vos objectifs de manière appropriée:

     <uses-sdk android:minSdkVersion="7" android:targetSdkVersion="14" /> 

    Recherchez ceci dans votre fichier AndroidManifest.xml:

     <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="16"/> 

    Changez minSdkVersion à 14.

    Switch nécessite l'API 14, pour l'ancienne version, utilisez SwithCompat:

     <android.support.v7.widget.SwitchCompat android:id="@+id/switch_compat" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:checked="true" android:textOff="OFF" android:textOn="ON" app:showText="false" android:focusable="false" android:focusableInTouchMode="false"/> 

    Sur setOnCheckedChangeListener:

     witchCompat switchCompat = (SwitchCompat)convertView.findViewById(R.id.switch_compat); switchCompat.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if (isChecked) { textView.setText("check"); } else { textView.setText("unCheck"); } } }); 

    J'espère vous aider.

    Votre android:minSdkVersion est réglé sur 8. Cela signifie que votre application fonctionnera sur API-8 (2.2.1) et plus, mais elle se bloquera car Switch n'est pas disponible

    Une meilleure solution est d'avoir deux mises en page xml différentes dans le dossier layouts et les mises en page-dossier v14 avec les mêmes noms et le même code. Dans les mises en page, il permet de basculer / cocher les cases et les mises en page-v14 son commutateur et vérifier dynamiquement la version api et gonfler la disposition respective.

    Regardez qu'il y a deux façons de résoudre votre problème d'abord, soit vous modifiez votre minSdkVersion <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="16"/> de 8 à 14 ou définissez une autre disposition contenant Switch in layout-v14 you Peut créer manuellement ce dossier dans le répertoire Res

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.