如何处理RadioGroup.SetOnCheckedChangeListener?

时间:2015-04-29 19:02:50

标签: c# android xamarin radio-button

    public class OnAdicionarEventArgs : EventArgs
        {
            private string mNome;
            private string mPreco; 
            private string mUnidade;
            private string mCategoria;

            public string Nome
            {
                get{ return mNome; }
                set{ mNome=value;}

            }
            public string Preco
            {
                get{ return mPreco; }
                set{ mPreco=value;}

            }
            public string Unidade
            {
                get{ return mUnidade; }
                set{ mUnidade=value;}

            }
            public string Categoria
            {
                get{ return mCategoria; }
                set{ mCategoria=value;}

            }

            public OnAdicionarEventArgs (string nome, string preco, string unidade, string categoria) : base()
            {
                Nome = nome;
                Preco = preco;
                Unidade = unidade;
                Categoria = categoria;
            }

        }

        class dialog_Adicionar_produto:DialogFragment
        {
            double pr=1;
            private Button mBtnAdicionar;
            private EditText mNome;
            private EditText mPreco;

            private EditText mCategoria;
            private RadioButton mRdbUnidades;
            private RadioButton mRdbKilos;
            private RadioGroup radG;
            int aux;

            public event EventHandler<OnAdicionarEventArgs> mOnAdicionarComplete;


            public override View OnCreateView (LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
            {
                base.OnCreateView (inflater, container, savedInstanceState);

                var view = inflater.Inflate (Resource.Layout.dialog_adicionar_produtos, container, false);

                mBtnAdicionar = view.FindViewById<Button> (Resource.Id.btnDialogAdicionar);
                mNome = view.FindViewById<EditText> (Resource.Id.txtNome);
                mPreco = view.FindViewById<EditText> (Resource.Id.txtPreco);

                mCategoria = view.FindViewById<EditText> (Resource.Id.txtCategoria);

                mRdbUnidades = view.FindViewById<RadioButton> (Resource.Id.rdbUnidades);
                mRdbKilos = view.FindViewById<RadioButton> (Resource.Id.rdbUnidades);

                radG = view.FindViewById<RadioGroup> (Resource.Id.radioGroup);

                mBtnAdicionar.Click += mBtnAdicionar_Click;
                mNome.TextChanged += mNome_TextChanged;
                mPreco.TextChanged += mPreco_TextChanged;

                mCategoria.TextChanged += mCategoria_TextChanged;





                return view;
            }

            void  mRdbUnidades_Click(object sender, EventArgs e)
            {

                aux = 0;
                Console.WriteLine (mRdbUnidades.Text);
            }

            void mRdbKilos_Click (object sender, EventArgs e)
            {

                aux = 1;
                Console.WriteLine (mRdbKilos.Text);
            }

            void mBtnAdicionar_Click (object sender, EventArgs e)
            {

                //User has clicked the sign up button
                if (aux == 0) {
                    mOnAdicionarComplete.Invoke (this, new OnAdicionarEventArgs (mNome.Text, mPreco.Text, mRdbKilos.Text, mCategoria.Text));
                    this.Dismiss ();
                } else {
                    mOnAdicionarComplete.Invoke (this, new OnAdicionarEventArgs (mNome.Text, mPreco.Text, mRdbUnidades.Text, mCategoria.Text));
                    this.Dismiss ();
                }

            }
}

当用户检查一个或另一个时,我想得到当前检查的单选按钮的值。但是我该怎么做呢?不是用RadioButton.Click吧? 我将通过RadioButton.Text获取此值,它将从检查的那个中获取它。

1 个答案:

答案 0 :(得分:1)

使用CheckedChange事件,您将收到所选RadioButton的ID:

radG.CheckedChange += (sender, e) => {
    Console.WriteLine(view.FindViewById<RadioButton>(e.CheckedId).Text);
}