J'ai la mise en page suivante (pratiquement vide):
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:id="@+id/set_layout"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
Android:contentDescription="content desc"
Android:orientation="vertical" >
<TextView Android:id="@+id/text"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="Hello, I am a TextView" />
</LinearLayout>
La classe d'activité contient les éléments suivants:
public class TestActivity extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
}
}
Lorsque j'exécute cette opération sur mon appareil mobile, l'erreur suivante apparaît:
SpannableStringBuilder
SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
J'ai essayé cela avec et sans TextView et l'erreur persiste, je dois faire quelque chose de fondamentalement faux pour une mise en page aussi élémentaire.
Quelqu'un at-il des idées sur la façon dont je peux le charger sans l'erreur?
J'ai rencontré les mêmes erreurs dans LogCat. Dans mon cas, cela est dû au clavier tiers que j'utilise. Lorsque je rétablis le clavier Android, l'entrée d'erreur ne s'affiche plus.
Parce que l'erreur que vous obtenez est pas liée à une EditText
, alors c'est pas liée à votre clavier.
Les erreurs que vous obtenez ne sont pas le résultat de votre code. vous effectuez probablement des tests sur un appareil Samsung doté du TouchWiz de Samsung.
J'ai eu les mêmes erreurs, puis j'ai testé sur un Nexus S (également de Samsung, mais sous Android pur sans TouchWiz) et je n'ai pas eu cette erreur.
Donc, dans votre cas, ignorez simplement ces erreurs lors des tests sur un périphérique! :)
En regardant votre code, je ne sais pas pourquoi vous obtenez cette erreur, mais j'avais la même erreur, mais avec les champs EditText.
Changer Android:inputType="text"
(ou l'une des autres variantes de texte inputType) en Android:inputType="textNoSuggestions"
(ou Android:inputType="textEmailAddress|textNoSuggestions"
, par exemple) l'a corrigé.
Vous pouvez également définir ceci dans le code avec quelque chose comme
mInputField.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
On dirait qu'Android suppose par défaut que les champs EditText auront des suggestions. Quand ils ne le font pas, il se trompe. Pas à 100% confiant dans cette explication, mais les changements mentionnés ci-dessus l'ont corrigé.
http://developer.Android.com/reference/Android/text/Spanned.html#SPAN_EXCLUSIVE_EXCLUSIVE
J'espère que cela t'aides!
Sur votre téléphone Android, allez à:
Paramètres -> Gestionnaire d'applications -> Tous -> Clavier Samsung puis cliquez sur "Vider le cache"
(supprime toutes les données collectées par cette application).
Essayez d'utiliser le clavier Android par défaut, il disparaîtra
Assurez-vous que vous avez passé une valeur dans votre MainAcitivity pour les méthodes suivantes onCreateOptionsMenu et onCreate
Dans certains cas, le développeur supprime l'instruction "return super.onCreateOptionsMenu (menu)" et devient "return true".
Cela a fonctionné pour moi ... sur chaque appareil
<EditText
Android:maxLines="1"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:textSize="15sp"
Android:layout_centerVertical="true"
Android:textColor="#000"
Android:id="@+id/input_search"
Android:background="@null"
Android:inputType="text"
Android:hint="Enter Address, City or Zip Code"
Android:imeOptions="actionSearch"
/>
En code Java:
mSearchText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView textView, int actionId, KeyEvent keyEvent) {
if(actionId == EditorInfo.IME_ACTION_SEARCH
|| actionId == EditorInfo.IME_ACTION_DONE
|| keyEvent.getAction() == KeyEvent.ACTION_DOWN
|| keyEvent.getAction() == KeyEvent.KEYCODE_ENTER){
//execute our method for searching
}
return false;
}
});
Pour essayer de déboguer cette erreur, allez d’abord sur votre terminal/console Android et exécutez cette commande:
ps | grep THE_ERROR_PID_YOU_GET_(IT_IS_A_NUMBER)
si la sortie apparaît comme votre application, c’est votre application qui cause l’erreur. Essayez de chercher Strings
vide que vous passez dans la layout
.
J'ai eu exactement le même problème et c'était de ma faute car je passais un String
vide dans ma mise en page. Après avoir changé le ""
en " "
, cette erreur a disparu.
Si vous n'obtenez pas votre application à partir de la sortie de la console, c'est quelque chose d'autre qui la cause (probablement, comme d'autres l'ont dit, le clavier Android).
Masood Moshref a raison, cette erreur se produit car le menu d'options de Menu n'est pas bien préparé en l'absence de "return super.onCreateOptionsMenu (menu)" dans la méthode onCreate ().
J'ai eu le même avertissement et j'ai constaté que la suppression d'un @id inutilisé permettait de s'en débarrasser. Pour moi, il était évident que le @id était associé à une liste croissante de textViews liés à une base de données, il y avait donc un avertissement pour chaque entrée.
J'ai eu le même problème alors je l'ai corrigé en suivant le code!
text = (EditText)findViewById(R.id.TextVoiceeditText);
text.setInputType(InputType.TYPE_CLASS_TEXT|InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
Dans mon cas, les champs EditText avec inputType en tant que text/textCapCharacters couvraient cette erreur. Je l’ai remarqué dans mon logcat chaque fois que j’utilisais backspace pour supprimer complètement le texte saisi dans l’un de ces champs.
La solution qui a fonctionné pour moi a été de changer le type inputType de ces champs en textNoSuggestions car il s’agissait du type le plus adapté et ne m’apportait aucune erreur indésirable.
J'ai fait face au même problème. J'ai presque perdu presque deux semaines à résoudre ce problème ..__ Enfin, j'ai eu un doute sur moi-même et j'ai essayé de créer un autre projet en copiant/collant des fichiers de démarrage comme SplashScreen & LoginScreen.
Mais avec le même code, j'obtenais encore SPAN_EXCLUSIVE_EXCLUSIVE .
Ensuite, j'ai supprimé le code du gestionnaire de l'écran de démarrage et essayé à nouveau et Wow son fonctionnement . Je ne reçois pas SPAN_EXCLUSIVE_EXCLUSIVE issue dans logcat .
Je me demande pourquoi c'est? jusqu’à ce que le temps n’ait pas eu d’autre solution mais en supprimant le gestionnaire de l’écran de démarrage, cela fonctionne.
Essayez de mettre à jour ici si cela est résolu ou non.
Vérifiez si des éléments tels que des boutons ou des vues de texte sont dupliqués (copiés deux fois) à l'écran. J'ai fait cela inaperçu et j'ai dû faire face au même problème.
J'ai rencontré ce problème aussi lorsque j'ai copié du texte à partir d'Internet. Ma solution est de supprimer le formatage du texte/supprimer avant tout traitement ultérieur.
essayez d’éviter d’utiliser view dans un fichier XML.J'ai aussi le même problème, mais quand j’ai supprimé la vue. sa a fonctionné parfaitement.
comme exemple:
<EditText
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:hint="Username"
Android:inputType="number"
Android:textColor="#fff" />
<view
Android:layout_width="match_parent"
Android:layout_height="1dp"
Android:background="#f9d7db" />
vérifiez également et essayez de changer par essais et erreurs Android: inputType = "numéro" en Android: inputType = "text" ou, mieux, ne pas l'utiliser s'il n'est pas requis .Parfois, le clavier est bloqué et génère des erreurs dans certains les appareils.
cette erreur se produit également en raison d'une modification de l'URL de l'API. essayez de frapper l'URL que vous utilisez dans postman and c s'il fonctionne correctement . revérifier les API résolu mon problème
J'ai eu le même problème mais avec un listView .... je l'ai résolu parce que j'utilisais un mauvais R.id.listView que la vue liste devait avoir une valeur, dans mon cas c'était des chaînes que j'ai sauvegardées sur listView2 ... donc le bon code était R.id.listView2