Android: Jeu de Modifier le texte ou de texte identification par programmation
Je développe une application dans laquelle je suis entrain de créer un Edittext par programmation comme :
EditText edText = new EditText(this);
edText.setId(1);
edText .setLayoutParams(new TableLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT,0f));
edText .setInputType(InputType.TYPE_CLASS_NUMBER);
edText.setHint("dsgsdgsgs");
tableLayout.addView(edText);
Ici, je suis réglage de l'id de Modifier le texte comme "1" par la ligne edText.setId(1);
en entier.
Mais ce dont j'ai besoin est - que je veux mettre l'ID dans le caractère comme par exemple:
edText.setId("edittext_hello");
De sorte que je peux y accéder par le biais de l'id. Comment puis-je réaliser cette tâche, s'il vous plaît aider.
OriginalL'auteur Optim India | 2014-03-20
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas définir l'id comme une Chaîne de caractères. Vous ne pouvez attribuer entier comme Id. Mais si vous souhaitez utiliser la Chaîne comme id pour la facilité d'utilisation -
dans res/values/ids.xml fichier
Et ensuite l'utiliser comme:
De sorte que vous pouvez faire ce que vous avez besoin.
Je suis d'accord 🙁 et c'est marqué que la réponse - un peu gênant!
Que faire si vous avez créé les éléments de façon dynamique en fonction d'un fichier de propriétés? Comment pouvez-vous définir l'Id dans le fichier de propriétés de manière dynamique à chacun des éléments créés?
Ok, j'ai compris comment. Juste besoin d'avoir la référence du parent de l'élément, vous avez défini un tag, et puis, vous pouvez le trouver avec la balise.
LinearLayout linearLayout= (LinearLayout) findViewById(R.id.sale_aditionals_layout);
et puisMaterialEditText materialEditText = (MaterialEditText) linearLayout.findViewWithTag(entry.getKey());
par exemple..OriginalL'auteur Manoj Fegde
Comme les autres l'ont dit, vous ne pouvez pas le faire. Pourquoi voulez-vous /quel est votre besoin?
Vous pouvez créer une id dans un fichier xml et l'utilisation que - si vous voulez qu'il soit descriptif. C'est aussi une meilleure approche que l'utilisation littérale
int
s que vous pouvez obtenir un id en contradiction avec d'autres points de vue dans la mise en page de la hiérarchie (rare mais possible). Cela me semble être le meilleur /le plus propre solution à votre problème.Voir http://developer.android.com/guide/topics/resources/more-resources.html#Id
par exemple, dans
res/values/id.xml
et fixé avec
Ok, j'ai compris comment. Juste besoin d'avoir la référence du parent de l'élément, vous avez défini un tag, et puis, vous pouvez le trouver avec la balise.
LinearLayout linearLayout= (LinearLayout) findViewById(R.id.sale_aditionals_layout);
et puisMaterialEditText materialEditText = (MaterialEditText) linearLayout.findViewWithTag(entry.getKey());
par exemple..OriginalL'auteur Dori
Non, vous ne pouvez pas définir de
id
comme une Chaîne de caractères. Vous ne pouvez attribuerinteger
comme Id. Vous pouvez utilisersetTag()
deView
avec de la Ficelle. Mais pour id il ne Entier. Comme android maintien des ressources en R.java fichier de type entier.Mise à jour:
Pourquoi ne vous définissez pas de Chaîne ou d'autres types de données (sans entier) numéro d'identification pour tout android de ressources?
Parce que:
Android id de Ressource est un entier de 32 bits. Il comprend
La id de Package identifie le Paquet morceau qui contient la Ressource.
La id de Type de identifie le type de la Ressource et donc le correspondant Typespec morceau et
Type de morceau ou des morceaux qui contiennent de sa valeur ou de valeur(s)
La Entrée d'index identifie la personne Ressource au sein de l'Typespec morceau et le Type de segment(s).
OriginalL'auteur user370305
Vous ne pouvez pas définir de
id
avecchar
,String
ou quoi que ce soit d'autre, saufint
...parce que,id
est maintenu parR.java
fichier qui ne contient que desint
.Vous pouvez utiliser
setTag()
au lieu desetId()
.Utilisation
setTag()
comme ci-dessous...OriginalL'auteur Hamid Shatu
Vous pouvez également réaliser votre problème sans créer aucune ressource supplémentaire comme ids.xml et sans avoir aucune id de l'EditText créé dynamiquement.
Juste besoin d'avoir la référence du parent de l'élément, vous avez défini un tag, et puis, vous pouvez le trouver avec la balise.
Parent
LinearLayout linearLayout= (LinearLayout) findViewById(R.id.layout_id);
et puis
Childs
EditText editText = (EditText) linearLayout.findViewWithTag("yourStringTag");
par exemple..
Remarque: Évidemment, si vous avez créé EditTexts de façon dynamique, vous faites quelque chose comme cela:
OriginalL'auteur FLBKernel
Vous pouvez utiliser setText() au lieu de setId().
edText_view.setText("Votre Texte");
OriginalL'auteur Lakshay Sharma