Comment obtenir les éléments(findViewById) pour une mise en page qui est chargée dynamiquement(setView) dans une boîte de dialogue?
J'ai besoin d'obtenir l'EditText qui est définie dans un fichier xml de mise en page qui est chargée dynamiquement comme un point de vue dans une boîte de dialogue préférences c'est à dire :
public class ReportBugPreference extends EditTextPreference {
@Override
protected void onPrepareDialogBuilder(AlertDialog.Builder builder) {
super.onPrepareDialogBuilder(builder);
builder.setView(LayoutInflater.from(ctx).inflate(R.layout.preference_report_bug_layout,null));
EditText edttxtBugDesc = (EditText) findViewById(R.id.bug_description_edittext); //NOT WORKING
}
}
EDIT : SOLUTION par jjnFord
@Override
protected void onPrepareDialogBuilder(AlertDialog.Builder builder) {
super.onPrepareDialogBuilder(builder);
View viewBugReport = LayoutInflater.from(ctx).inflate(R.layout.preference_report_bug,null);
EditText edttxtBugDesc = (EditText) viewBugReport.findViewById(R.id.bug_description_edittext);
builder.setView(viewBugReport);
}
OriginalL'auteur Vikas Singh | 2012-04-25
Vous devez vous connecter pour publier un commentaire.
Depuis que vous êtes à l'extension de EditTextPreference vous pouvez simplement utiliser le getEditText() la méthode pour saisir le texte par défaut de la vue. Cependant, puisque vous êtes le réglage de votre propre mise en page ce ne sera probablement pas faire ce que vous êtes recherche pour.
Dans votre cas, vous devez Gonfler votre mise en page XML dans un objet de Vue, puis de trouver l'editText dans la vue, puis vous pouvez passer votre point de vue pour le constructeur. N'ai pas essayé cela, mais juste en regardant ton code je pense que c'est possible.
Quelque chose comme ceci:
OriginalL'auteur jjNford
LayoutInflater inflater = getActivity().getLayoutInflater();
View view= inflater.inflate(R.layout.your_xml_file, null);
TextView textView =
(TextView)view.findViewById(R.id.text_view_id_in_your_xml_file);
textView.setText("Hello!");
OriginalL'auteur Sara