Intent可以传一个对象

当两个界面之间跳转时,需要传递一个对象过去,是通过使用Bundle类,并且实体类需要serializable实现序列化,传递方法如下:

定义一个静态常量作为key值

public final static String SER_KEY="com.xiaoshu.worker";

Intent intent=new Intent();

intent.setClass(WorkerActivity.this,DisplayWorker.class);

Bundle bundle = new Bundle();

bundle.putSerializable(SER_KEY, worker);

intent.putExtras(bundle);

startActivity(intent);

在另一个界面,接收通过intent传递过来的对象。接收方法如下

Worker worker = (Worker) getIntent().getSerializableExtra(WorkerActivity.SER_KEY);

/**

* 1.建一个类MyProvide ,继承ContentProvider ,实现四个方法,需要注册。在activity中调用。

* 注册如下:

<provider android:name=".MyProvide" android:authorities="www.android1.com.cn"></provider>

*

* 2.通过一个监听按钮获得MyProvide 解析器在另一个MainActivity 中。

*ContentResolver   resolver=MainActivity.this.getContentResolver();//监听时,获取共享数据,一个查询一个插入

*Uri  uri=Uri.parse("content://www.android1.com.cn");//uri代表资源地址

*resolver.query(uri,null,null,null);查询

*ContentValues   values=new ContentValues();//插入放一个对象进去,因为insert方法需要传一个values值。

*resolver.insert(uri,values);

*

*******************执行数据库的操作MainActivity ************************

public class MainActivity extends Activity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

Button  button=(Button) findViewById(R.id.sss_sss);

button.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

//获得内容解析对象resolver,通过这个对象,对数据库进行操作

ContentResolver   resolver=MainActivity.this.getContentResolver();

Uri  uri=Uri.parse("content://www.android1.com.cn");

resolver.query(uri, null, null, null, null);

ContentValues   values=new ContentValues();

values.put("name", "zhaoshan");

resolver.insert(uri, values);

}

});

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.main, menu);

return true;

}

}

*******************************************************************************

/*内提需要注册  <provider android:name=".MyProvide" android:authorities="www.android1.com.cn"></provider>

* 内容提供者和数据库绑定,其它程序不可记问本程序的数据库,但可以通过内容提代者访问数据库。

*/

public class MyProvide extends ContentProvider {

SQLiteDatabase db = null;

@Override

public boolean onCreate() {

// 实例化数据库

MyDBHelper helper = new MyDBHelper(this.getContext());

db = helper.getWritableDatabase();

return true;

}

@Override

public Cursor query(Uri uri, String[] projection, String selection,

String[] selectionArgs, String sortOrder) {

// 查询数据库,返回一个游标值。

return db.query("Users", projection, selection, selectionArgs, null,

null, sortOrder);

}

@Override

public Uri insert(Uri uri, ContentValues values) {

db.insert("Users", "_id", values);

return uri;

}

@Override

public int delete(Uri uri, String selection, String[] selectionArgs) {

return db.delete("Users", selection, selectionArgs);

}

@Override

public int update(Uri uri, ContentValues values, String selection,

String[] selectionArgs) {

int s = db.update("Users", values, selection, selectionArgs);

return s;

}

@Override

public String getType(Uri uri) {

return null;

}

}

//*************创建数据库szt**************************

public class MyDBHelper extends SQLiteOpenHelper {

public MyDBHelper(Context context) {

super(context, "szt.db", null, 1);

}

@Override

public void onCreate(SQLiteDatabase db) {

// 创建一个数据表Users

db.execSQL("create table Users(_id integer primary key autoincrement,name text)");

}

@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

// TODO Auto-generated method stub

}

}

*******************************************************************************

/**测试其它应用程序的数据

*  首先知道其它程序的共享参数,这个是继承ContentProvider共享参数类的注册格式:

*  <provider android:name=".MyProvide" android:authorities="www.android1.com.cn"></provider>

* 1.TestMyProvide测试类首先在资源文件中添加权限在Instrumentation-->add---->name--->android.test.InstrumentationTestRunner

*                                                 ---->Target package--->com.example.testprovider 包名

* 2. 注册测试资源文件

*  <application

android:allowBackup="true"

android:icon="@drawable/ic_launcher"

android:label="@string/app_name"

android:theme="@style/AppTheme" >

<activity

android:name="com.example.testprovider.MainActivity"

android:label="@string/app_name" >

<intent-filter>

<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />

</intent-filter>

</activity>

<uses-library android:name="android.test.runner"/>//加入这个固定格式

</application>

*

*3.注册完后,本类,继承AndroidTestCase类,重写测试数据库的方法,方法名以test开头的。

* 在outline模式下,出现TestMyProvide类下的五个方法setUp();

*    testInsert();

*    testQuery();

*    testdelete();

*    testUpdate();

*    选中一个方法,点击右键--->Run As--->Android jUnit Test运行方法

*    在MyProvide类下,在data--date--包名--导出数据库后,查看数据库

*/

public class TestMyProvide extends AndroidTestCase {

ContentResolver resolver = null;

@Override

protected void setUp() throws Exception {

resolver  = this.getContext().getContentResolver();

super.setUp();

}

public void testInsert(){

ContentValues values = new ContentValues();

values.put("name", "wangchenghua");

resolver.insert(Uri.parse("content://www.android1.com.cn"), values);

Log.i("msg", "wangchenghua");

}

public void testQuery(){

Cursor c = resolver.query(Uri.parse("content://www.android1.com.cn"), null, null, null, null);

while(c.moveToNext()){

Log.i("msg", c.getString(c.getColumnIndex("name")));

}

c.close();

}

public void testdelete(){

resolver.delete(Uri.parse("content://www.android1.com.cn"), "_id = ?", new String[]{String.valueOf(1)});

}

public void testUpdate(){

ContentValues values = new ContentValues();

values.put("name", "wangxiaoou");

resolver.update(Uri.parse("content://www.android1.com.cn"), values, "_id = ?", new String[]{String.valueOf(4)});

}

}

共享参数ContentProvider 类与数据库绑定,如何通过共享参数测试类,测试数据库的增删改查功能的更多相关文章

  1. 使用MVC5+Entity Framework6的Code First模式创建数据库并实现增删改查功能

    此处采用VS2017+SqlServer数据库 一.创建项目并引用dll: 1.创建一个MVC项目 2.采用Nuget安装EF6.1.3 二.创建Model 在models文件夹中,建立相应的mode ...

  2. 3.创建Manager类,演示对TestUser进行增删改查功能

    接上一篇文章 创建NHibernateHelper帮助类,生成sessionFactory http://www.cnblogs.com/fzxiaoyi/p/8443587.html 创建个新的类M ...

  3. MVC模式:实现数据库中数据的增删改查功能

    *.数据库连接池c3p0,连接mysql数据库: *.Jquery使用,删除时跳出框,确定是否要删除: *.使用EL和JSTL,简化在jsp页面中插入的java语言 1.连接数据库 (1)导入连接数据 ...

  4. Python操作MySQL数据库完成简易的增删改查功能

    说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家! 目录 一丶项目介绍 二丶效果展示 三丶数据准备 四丶代码实现 五丶完整代码 一丶项目介绍 1.叙述 博主闲暇之余花了10个小时写的 ...

  5. Python访问MySQL数据库并实现其增删改查功能

    概述:对于访问MySQL数据库的操作,我想大家也都有一些了解.不过,因为最近在学习Python,以下就用Python来实现它.其中包括创建数据库和数据表.插入记录.删除记录.修改记录数据.查询数据.删 ...

  6. Zend Framework1 框架入门(针对Windows,包含安装配置与数据库增删改查)

    最近公司接的项目需要用到Zend Framework框架,本来需要用的是ZendFramework2 ,但是由于原有代码使用了ZendFramework1 框架,所以顺带学习了.现将一些基础入门记录一 ...

  7. Java操作数据库实现"增删改查"

    本文主要讲解JDBC操作数据库    主要实现对MySql数据库的"增删改查" 综合概述: JDBC的常用类和接口 一   DriverManager类 DriverManage类 ...

  8. python代理池的构建4——mongdb数据库的增删改查

    上一篇博客地址:python代理池的构建3--爬取代理ip 一.mongdb数据库的增删改查(Mongo_pool.py) #-*-coding:utf-8-*- ''' 实现代理池的数据库模块 ●作 ...

  9. 使用C#进行数据库增删改查ADO.NET(一)

    这节讲一下如何使用C#进行数据库的增删改查操作,本节以SQL Server数据库为例. .NET 平台,使用ADO.NET 作为与数据库服务器的桥梁,我们通过ADO.NET就可以使用C#语言操作数据库 ...

随机推荐

  1. GridView 导出Excel

    protected void btnExcel_Click(object sender, EventArgs e) { ) { ExportGridViewForUTF8(GridView1, Dat ...

  2. SQL SERVER 2005 获取表的所有索引信息以及删除和新建语句

    BEGIN        WITH tx AS        (                SELECT a.object_id                      ,b.name AS s ...

  3. JQuery弹出窗口小插件ColorBox

    本文来自: Small_陌 http://www.cnblogs.com/wggmqj/archive/2011/11/04/2236263.html 今天在博客园看到一篇<ASP.NET MV ...

  4. Objective-C——判断对象等同性

    无论我们使用什么语言,总是会出现需要判断两个对象是否相等的情况,OC当然也不例外.首先看一段代码: NSString *str1 = [[NSString alloc] initWithCString ...

  5. Swift中元组(Tuples),结构体(Struct),枚举(Enums)之间的区别

    Swift有许多种存储数据方式,你可以用枚举(enums),元组(tuples),结构体(structs),类(classes),在这篇文章中我们将比较枚举.元组.结构体之间区别,首先从最简单的开始- ...

  6. 10个原生JavaScript技巧

    这些代码片段主要由网友们平时分享的作品代码里面和经常去逛网站然后查看源文件收集到的.把平时网站上常用的一些实用功能代码片段通通收集起来,方便网友们学习使用,利用好的话可以加快网友们的开发速度,提高工作 ...

  7. mysql 相同表求解统一字段不同内容的交集

    SELECT id, bid, name, title, publisher FROM A where publisher in (select publisher from B group by B ...

  8. asp.net生成缩略图、文字图片水印

    /// <summary> /// 会产生graphics异常的PixelFormat /// </summary> private static PixelFormat[] ...

  9. Unity3D Object.DontDestroyOnLoad 备忘

    初学Untiy3D,记录备忘. public static void DontDestroyOnLoad(Object target); Makes the object target not be ...

  10. 实现一个对象验证库系列 -- 3) Fluent以及扩展方法实现 (请大神批评)

    前情回顾: 上一篇 2) 验证器实现 简单描述了下验证器的简单实现 本文将说说Fluent方式的实现,欢迎大神们指点指点 3) Fluent以及扩展方法实现 我们按照之前 Fluent 的设想以及我们 ...