Utilisation de boutons radio dans une boîte de dialogue
-
12-11-2019 - |
Question
Je veux pouvoir désactiver l'utilisateur un choix d'options et je voudrais désactiver certains boutons radio dans une boîte de dialogue. J'ai déclaré les boutons radio comme celui-ci dans la section onCreate
@Override
protected Dialog onCreateDialog(int id) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
if (id > 0)
{
LayoutInflater layoutInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
final View layout = layoutInflater.inflate(R.layout.lectsort_dialog, (ViewGroup) findViewById(R.id.lect_sort));
builder.setView(layout);
// Now configure the AlertDialog
builder.setTitle(R.string.exsort_title);
radio_date = (RadioButton) findViewById(R.id.RBdate);
radio_loctn = (RadioButton) findViewById(R.id.RBloctn);
radio_stream = (RadioButton) findViewById(R.id.RBstream);
radio_date.setOnClickListener(radio_listener);
radio_loctn.setOnClickListener(radio_listener);
radio_stream.setOnClickListener(radio_listener);
builder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
}
La procédure radio_listener est déclarée comme celle-ci
RadioButton.OnClickListener radio_listener =
new RadioButton.OnClickListener()
{
@Override
public void onClick(View v) {
// Perform action on clicks
RadioButton rb = (RadioButton) v;
Toast.makeText(LecturesActivity.this, rb.getText(), Toast.LENGTH_SHORT).show();
}
};
Cependant, lorsque la boîte de dialogue est appelée, j'obtiens une erreur d'exception null sur cette ligne
radio_date.setOnClickListener(radio_listener);
Qu'est-ce que je fais mal?
La solution
Lorsque vous souhaitez obtenir l'ID d'un élément d'interface utilisateur situé dans une boîte de dialogue, vous devez le faire comme ceci.
Dialog dialog = new Dialog(mContext); // your dialog creation method here
RadioButton radio_date = (RadioButton) dialog.findViewById(R.id.RBdate);
Si tu utilises findViewById
Ensuite, vous essayez de capturer l'objet de vue qui est associé à la vue d'acitivité actuelle (que vous auriez définie dans le setContentView
API)
Il essaie donc de trouver une vue avec l'ID RBdate
Dans la vue d'activité qu'il n'est pas en mesure de trouver et renvoie donc un nul.
Autres conseils
Vérifiez le code suivant Il s'agit d'une alerte avec des boutons radio sur un clic de bouton
final AlertDialog.Builder builder = new AlertDialog.Builder(this);
btn.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
//int states = {false, false};
builder.setTitle("Select the item that you want to delete from that item ");
builder.setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// TODO Auto-generated method stub
if(id==0){
}
else
{
});
alert= builder.create();
alert.show();
}
});
tu essaies ceci et faites-moi savoir