扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
Android中提供4种数据存储的方法:(1)SharedPreferences,用键值对的方式来存储数据,是一种轻量级的存储机制,可以存储一些属性等。(2)Files:文件输入输出流的方式存储数据,FileInputStream和FileOutputStream。在Android中,文件是一个应用程序私有的,一个应用程序无法读写其他应用程序的文件。写入SD卡除外。(3)SQLite(4)网络(这个不算吧~~~--!)。
创新互联服务项目包括陵川网站建设、陵川网站制作、陵川网页制作以及陵川网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,陵川网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到陵川省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
SQLite:
(1)创建和打开数据库可以使用方法openOrCreateDatabase,它会自动去检测是否存在数据库,如果存在则打开,如果不存在则创建一个数据库;成功返回一个SQliteDatabase对象。(2)创建一张表通过SQL语句实现,调用sqliteDatabase对象的execSQL方法,执行创建表的SQL语句。
(3)向数据表中添加一条记录可以直接通过SQL语句实现,也可以使用ContentValue对象,ContentValue对象是一个Map,Key是字段名,Value是值。Cv.put(key,value);然后调用sqliteDatabase对象的
insert(tableName,null,cv)方法插入数据。
(4)删除数据可以直接执行SQL,也可以执行sqliteDatabase的delete方法。
(5)同理修改数据也是执行SQL或调用update方法,需要传入ContenValue的对象表示修改的内容。
(6)关闭数据库sqliteDatabase.close();
(7)删除指定表调用SQL语句即可。
(8)查询:在Android中查询数据是通过Cursor类来实现的,当我们使用SQLiteDatabase.query()方法时,会得到一个Cursor对象,Cursor对象指向的是每条数据。例如cur.moveToFirst();cur.moveToNext();等。在实际开发中,为了能够更好地管理和维护数据库,我们会封装一个继承自SQLiteOpenHelper类的数据库操作类。SQLiteOpenHelper的构造方法中分别需要传入Context、数据库名称、CursorFactory(一般默认null)、数据库版本号。在SQLiteOpenHelper中首先执行的是onCreate方法(当数据库第一次被创建时)。在构造函数中并没有真正创建数据库,而是调用getWriteableDatabase或者getReadableDatabase方法时才真正去创建数据库,并且返回一个SQLiteDatabase对象。
通常来说,一个android应用程序不止一个Activity(活动),更不止一个界面。于是需要创建多个Activity来满足应用程序的要求,这里我将告诉大家如何添加新的Activity,并实现Activity之间的切换,这里的两个活动以不同界面展示,活动的切换相当于界面的切换。
Android studio
Android手机或者安卓模拟器
首先创建一个Test项目工程,选择默认版式,选择好自己喜欢的主题(Theme)。
Android studio教程:[6]创建多个Activity
在文件管理器中找到layout下的xml文件,并将其复制粘贴一份到layout目录下,命名为second_activity.xml。
Android studio教程:[6]创建多个Activity
接下来在.java文件处新建一个java class,命名为SecondActivity。
Android studio教程:[6]创建多个Activity
Android studio教程:[6]创建多个Activity
此时可以看到文件目录中多出来一个xml文件和一个java类文件。
Android studio教程:[6]创建多个Activity
打开AndroidManifest.xml文件,添加一个activity/activity标签,添加内容如下:
activity
android:name=".SecondActivity"
android:label="Second Activity"
intent-filter
action android:name="com.litreily.SecondActivity"/
category android:name="android.intent.category.DEFAULT"/
/intent-filter
/activity
Android studio教程:[6]创建多个Activity
修改SecondActivity.xml:
TextView
android:text="The Second Activity!"
android:layout_width="wrap_content"
android:layout_height="wrap_content" /
Android studio教程:[6]创建多个Activity
修改SecondActivity.java文件:
public class SecondActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.SecondActivity);
}
}
Android studio教程:[6]创建多个Activity
修改主界面的activity_my.xml文件,添加一个按钮,用于跳转Activity:
Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="转到下一个界面"
android:onClick="onClick"/
Android studio教程:[6]创建多个Activity
在主界面的java类中实现按钮的点击事件响应函数onClick,通过startActivity函数打开新的Activity.
public void onClick(View view)
{
startActivity(new Intent("com.litreily.SecondActivity"));
}
Android studio教程:[6]创建多个Activity
设置采用模拟器打开App,并启动调试打开模拟器。
Android studio教程:[6]创建多个Activity
在模拟器中运行程序,点击按钮可以切换Activity,在第二个界面点击返回键可以返回主界面。
Android studio教程:[6]创建多个Activity
Android studio教程:[6]创建多个Activity
注意事项
xml文件的命名为小写字母或者数字,大写字母可能会报错
在SD卡上创建数据库
通过android的SQLiteOpenHelper类的源码,可以看到SQLiteOpenHelper类的getWritableDatabase
这个接口实际上调用的是Context的openOrCreateDatabase方法,而这个方法是不支持带路径的数据库名
称的,也就是说,用这个方法创建的数据库只能放在/data/data/包名称/ 目录下;要想在SD卡上创建数据库
,我们可以调用SQLiteDatabase类的openOrCreateDatabase方法,这个方法是支持带路径的数据库名称的。
那么下面的问题就是如何判断是否存在SD卡,已经如何获取SD卡的路径了?
判断是否存在SD卡:
android.os.Environment.MEDIA_MOUNTED.equals(
android.os.Environment.getExternalStorageState());
获取SD卡路径:String dbPath=android.os.Environment.getExternalStorageDirectory()
.getAbsolutePath();
在SD卡上创建数据库方法如下:
String dbPath=android.os.Environment.getExternalStorageDirectory()
.getAbsolutePath()+"/database";
File dbp=new File(dbPath);
File dbf=new File(dbPath+"/"+"test.db");
if(!dbp.exists()){
dbp.mkdir();
}
//数据库文件是否创建成功
boolean isFileCreateSuccess=false;
if(!dbf.exists()){
try{
isFileCreateSuccess=dbf.createNewFile();
}
catch(IOException ioex){
}
}
else{
isFileCreateSuccess=true;
}
if(isFileCreateSuccess)
db = SQLiteDatabase.openOrCreateDatabase(dbf, mFactory);
为了简便起见,我们可以用上述方法重写SQLiteOpenHelper类的getWritableDatabase方法,
其他逻辑参照SQLiteOpenHelper类即可。最后别忘了,加入SD卡的读写权限:
uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流