• 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则添加失败

    最后效果图

  • 相关阅读:
    c++学习--面向对象一实验
    c++学习--面向对象一
    c#学习
    Linux安全之SSH 密钥创建及密钥登录,禁止密码登陆
    laravel 5.5 跨域问题 并且laravel的跨域 Access-Control-Allow-Origin 报错的坑
    安装 lnmp
    微信小程序-聊天功能下拉加载更多数据(历史聊天内容出现在顶部)
    简单实现小程序view拖拽功能
    mysql 常用命令
    有感而发——写给曼曼的信
  • 原文地址:https://www.cnblogs.com/lihuazou/p/4335469.html
Copyright © 2020-2023  润新知