Xamarin.Android 记事本(二)自定义AlertDialog
导读
1.自定义一个AlertDialog
2.添加一条数据
正文
记事本应当有一个添加功能,这里我打算在右上角放一个item,然后点击这个item弹出一个对话框,输入名称,点击确定跳转到另一个activity进行添加数据。
public override bool OnCreateOptionsMenu(IMenu menu)
{
var m1 = menu.Add(, , , "新建");
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 :
{
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(, , , "保存");
m1.SetShowAsActionFlags(ShowAsAction.IfRoom | ShowAsAction.WithText);
return true;
}
public override bool OnOptionsItemSelected(IMenuItem item)
{
switch (item.ItemId)
{
case :
{
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 >= )
{
Toast.MakeText(this, "添加成功", ToastLength.Short).Show();
}
else
{
Toast.MakeText(this, "添加失败", ToastLength.Short).Show();
} this.Finish();
}
接收传递过来的edittitle值,insert一下,>=0则添加成功,-1则添加失败
最后效果图

Xamarin.Android 记事本(二)自定义AlertDialog的更多相关文章
- xamarin android 实现二维码带logo生成效果
MultiFormatWriter writer = new MultiFormatWriter(); Dictionary<EncodeHintType, object> hint = ...
- Xamarin Android 记事本(三)删改
这篇我就不做太多的说明了,数据操作之前也都举过例子了,这里就直接贴出删除和修改的代码. public override bool OnOptionsItemSelected(IMenuItem ite ...
- 老猪带你玩转android自定义控件二——自定义索引栏listview
带索引栏的listview,在android开发非常普遍,方便用户进行字母索引,就像微信通讯录这样: 今天,我们就从零到一实现这个具有索引栏的listview. 怎么实现这个控件了,我们应当梳理出一个 ...
- 玩转android自定义控件二——自定义索引栏listview
带索引栏的listview,在android开发非常普遍,方便用户进行字母索引,就像微信通讯录这样: 今天,我们就从零到一实现这个具有索引栏的listview. 怎么实现这个控件了,我们应当梳理出一个 ...
- Xamarin.Android 记事本(一)
导读 1.视图及数据库的创建 2.listview数据绑定 3.listview的点击事件 正文 如何创建一个listview,大家可以看这里,基本流程操作是一模一样的,我就不多说了,然后就是新建一个 ...
- [置顶]
xamarin android自定义spinner
以前弄的一个下拉框时自带的spinner,感觉好丑,实际效果实在满足不了基本的UI界面要求,还是自己动手丰衣足食,看了网上关于android中自定义spinner的文章,感觉实现原理还是比较简单,所以 ...
- Xamarin.Android开发实践(二)
原文:Xamarin.Android开发实践(二) 一.准备 开始学习本教程前必须先完成该教程http://www.cnblogs.com/yaozhenfa/p/xamarin_android_qu ...
- [置顶]
xamarin android使用zxing扫描二维码
好久没写了,这片文章篇幅不长,概述一下在xamarin android中用 ZXing.Net.Mobile库扫描二维码读取url的示例.扫码支付,扫码登录,App上各种各样的扫码,好像没个扫码的就有 ...
- xamarin android alertdialog详解
说明一下:学习xamarin android一段时间,准备写一些xamarin android相关的例子,alertdialog也是使用的非常多得空间之一,非常感谢鸟巢上的小猪,我也是看着他写的教程学 ...
随机推荐
- 【Luogu】P1131时态同步(树形DP)
题目链接 甚矣吾衰也!这么简单的DP我都不会了 太恐怖了 树形DP,从子树里选出时间最长的来,剩下的调到这个最长时间即可. #include<cstdio> #include<cct ...
- ZipKin原理学习--zipkin支持日志打印追踪信息
目前在zipkin brave已经提供功能在我们使用logback或log4j等时可以在日志信息中将traceId和spanId等信息打印到运行日志,这样可能对我们通过日志查看解决问题有比较大的 ...
- BZOJ 2127 happiness ——网络流
[题目分析] 基本上是第一次真正的使用最小割的模型. 同时加上一个数然后最后再减去是处理负数的一种方法. 设立出来最小割的模型然后解方程是一件很重要的事情,建议取一个相对来说比较简单的值带入求解. 这 ...
- UVA 11297 Census ——二维线段树
[题目分析] 二维线段树模板题目. 简直就是无比的暴力.时间复杂度为两个log. 标记的更新方式比较奇特,空间复杂度为N^2. 模板题目. [代码] #include <cstdio> # ...
- linux虚拟机无法上网 Network is unreachable
系统centos 安装ftp时报错 Couldn't resolve host 'mirrorlist.centos.org [root@wulihua bin]# yum install vsft ...
- vi 和vim 的区别以及用法
具体用法参考:http://blog.csdn.net/xuesnowce/article/details/53117352 它们都是多模式编辑器,不同的是vim 是vi的升级版本,它不仅兼容vi的所 ...
- CatchTheCaw ----广搜入门
抓住那头牛(POJ3278)农夫知道一头牛的位置,想要抓住它.农夫和牛都位于数轴上,农夫起始位于点N(0<=N<=100000),牛位于点K(0<=K<=100000).农夫有 ...
- codevs 2964公共素数因数
2964 公共素数因数 时间限制: 1 s 空间限制: 32000 KB 题目等级 : 白银 Silver 题解 题目描述 Description 小单同学刚学习了一个数分解成几个素 ...
- MFC中的几种播放声音的方法
一.播放声音文件的简单方法 在VC++ 中的多媒体动态连接库中提供了一组与音频设备有关的函数.利用这些函数可以方便地播放声音.最简单的播放声音方法就是直接调用VC++中提供的声音播放函 数BOOL s ...
- 常见的哈希Hash算法 & MD5 & 对称非对称加密 & 海明码
参考 Link 另外,这篇文章也提到了利用Hash碰撞而产生DOS攻击的案例: http://www.cnblogs.com/charlesblc/p/5990475.html DJB的算法实现核心是 ...