zoukankan      html  css  js  c++  java
  • Xamarin.Android 记事本(二)自定义AlertDialog

    导读

       1.自定义一个AlertDialog

       2.添加一条数据

    正文

      记事本应当有一个添加功能,这里我打算在右上角放一个item,然后点击这个item弹出一个对话框,输入名称,点击确定跳转到另一个activity进行添加数据。

     public override bool OnCreateOptionsMenu(IMenu menu)
            {
                var m1 = menu.Add(0, 1, 0, "新建");
                m1.SetShowAsActionFlags(ShowAsAction.IfRoom | ShowAsAction.WithText); 
                return true;
            }

    首先我们添加了一个item

    就是右上角的新建按钮,然后我们需要自定义一个AlertDialog,这样我们才能从AlertDialog中获取edittext的值

    首先我们新建一个名为EditText的布局文件,往里面添加一个edittext,设置ID为EditTitle

    然后我们重写OnOptionsItemSelected

    public override bool OnOptionsItemSelected(IMenuItem item)
             {
                 switch (item.ItemId)
                 {
                     case 1:
                         {
                             Android.App.AlertDialog.Builder builder = new AlertDialog.Builder(this);
                             AlertDialog ad = builder.Create();
                             ad.SetTitle("请输入标题");                         
                             ad.SetView(new EditText(this));
                             LayoutInflater inflater = LayoutInflater.From(this);
                             View layout = inflater.Inflate(Resource.Layout.EditText, null);                      
                             ad.SetView(layout);
                             ad.SetButton("完成", (s, e) =>
                             {
                                 EditText orderBookNum = (EditText)layout.FindViewById(Resource.Id.EditTitle);
                                 var intent = new Intent(this, typeof(Addnote));
                                 intent.PutExtra("title", orderBookNum.Text);
                                 StartActivity(intent);
                                 this.Finish();
                             });
                             ad.SetButton2("取消", (s, e) => { });
                             ad.Show();
    
    
                         }break;
                 }
                 return true;
             }

    这里我们把获取到的值传递到了Addnote活动中(添加事件)

    最后效果图

    获取到edittitle的值之后,我们进入addnote活动中进行添加数据

    重写OnCreateOptionsMenu并添加事件

     public override bool OnCreateOptionsMenu(IMenu menu)
            {
                var m1 = menu.Add(0, 1, 0, "保存");
                m1.SetShowAsActionFlags(ShowAsAction.IfRoom | ShowAsAction.WithText);
                return true;
            }
            public override bool OnOptionsItemSelected(IMenuItem item)
            {
                switch (item.ItemId)
                {
                    case 1:
                        {
                            Anote();
                            
                        } break;
                    case Android.Resource.Id.Home:
                        {
                            var intent = new Intent(this, typeof(Activity1));
                            StartActivity(intent);
                            this.Finish();
                        } break;
                }
                return true;
            }

    这里我写了一个Anote方法,就是添加数据的方法

    void Anote()
            {
                DateTime now = DateTime.Now;
                Sqlite dbHelper = new Sqlite(this);
                SQLiteDatabase db = dbHelper.WritableDatabase;
                ContentValues ncv = new ContentValues();
                var title = Intent.GetStringExtra("title");
                ncv.Put("title", title);
                ncv.Put("context", edtext.Text);
                ncv.Put("time", now.ToString("yyyy-MM-dd"));
                long id = db.Insert("NoteBooksql", null, ncv);
                var intentAct2 = new Intent(this, typeof(Activity1));
                StartActivity(intentAct2);
                if (id >= 0)
                {
                    Toast.MakeText(this, "添加成功", ToastLength.Short).Show();
                }
                else
                {
                    Toast.MakeText(this, "添加失败", ToastLength.Short).Show();
                }
                
                this.Finish();
            }

    接收传递过来的edittitle值,insert一下,>=0则添加成功,-1则添加失败

    最后效果图

  • 相关阅读:
    前端代码规范
    AD 对联
    leaflet 入门笔记
    在Mac OS X上安装Git
    在Mac上开启C的新征程
    Python编程基础
    GitHub的使用(Git Shell)
    《网页设计心理学》Susan M.Weinschenk 小结精粹
    【问题】做图片验证码时乱码了,在header前加上ob_clean()就能神奇的显示?!
    --allow-file-access-from-files 命令的使用
  • 原文地址:https://www.cnblogs.com/lihuazou/p/4335469.html
Copyright © 2011-2022 走看看