c# - 如何处理 RadioGroup.SetOnCheckedChangeListener?

标签 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 获取此值,它将从选中的那个获取。

最佳答案

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

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

关于c# - 如何处理 RadioGroup.SetOnCheckedChangeListener?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29952360/

相关文章:

c# - 以负边距滚动内容

c# - 代码优先配置错误

java - Android 应用程序发布日志错误

c# - 水平 ListView Xamarin.Forms

c# - DateTime.TryParse 或 Datetime.TryParseExact?

c# - 在 csproj 的 OutputPath 中使用 $(TargetName) 或 $(ProjectName)

java - 无法获得 gomobile 绑定(bind)以使用 java

android - 在 Android 中正确实现 ViewPager2

ios - 为 Xamarin.iOS 将 .mlmodel 编译为 .mlmodelc?

ios - 为什么 LambdaExpression.Compile() 在 iOS (Xamarin) 上工作?