乐学成语
来源:互联网 发布:优酷淘宝返利搞笑视频 编辑:程序博客网 时间:2024/04/28 05:12
工程目录如下
具体实现过程以及写的过程中遇到的问题
第一步:建立数据库
第二步 :导入数据库将idioms.db复制到ras文件夹下的raw文件夹若没有建一个
在db包中建DBOpenHelper.java代码如下
public class DBOpenHelper {
privatefinal int BUFFER_SIZE=400000;//缓冲区大小
publicstatic final String DB_NAME="idioms.db"; //保存的数据库文件名
publicstatic final String PACKAGE_NAME="com.example.happyidiom";//应用的包名
publicstatic final String DB_PATH="/data"
+Environment.getDataDirectory().getAbsolutePath()+"/"
+PACKAGE_NAME+"/databases";//在手机里存放数据库的位置
privateContext context;
publicDBOpenHelper(Context context){
this.context=context;
}
publicSQLiteDatabase openDatabase(){
try{
FilemyDataPath=new File(DB_PATH);
if(!myDataPath.exists()){
myDataPath.mkdirs();//如果没有这个数据库则创建
}
Stringdbfile=myDataPath+"/"+DB_NAME;
if(!(newFile(dbfile).exists())){//判断数据库文件是否存在,若不存在直接导入,
//否则直接打开数据库
InputStreamis=context.getResources().openRawResource(R.raw.idioms);
FileOutputStreamfos=new FileOutputStream(dbfile);
byte[]buffer=new byte[BUFFER_SIZE];
intcount=0;
while((count=is.read(buffer))>0){
fos.write(buffer,0,count);
}
fos.close();
is.close();
}
SQLiteDatabasedb=SQLiteDatabase.openOrCreateDatabase(dbfile, null);
returndb;
}catch(FileNotFoundExceptione){
Log.e("Database","Filenot found");
e.printStackTrace();
}
catch(IOExceptione){
Log.e("Database","IOexception");
e.printStackTrace();
}
returnnull;
}
}
在test包下新建DBOpenHelperTest.java测试一下 代码如下
public class DBOpenHelperTest extends AndroidTestCase{
publicvoid testDBCopy(){
DBOpenHelperdBOpenHelper=new DBOpenHelper(getContext());
dBOpenHelper.openDatabase();
}
}出现如下图视为成功
在entity下建立实体类Animal.java
public class Animal {
privateint id;
privateString name;
privateString pronounce;
privateString explain;
privateString autonym;
privateString homoionym;
privateString derivation;
privateString examples;
public intgetId() {
returnid;
}
publicvoid setId(int id) {
this.id= id;
}
publicString getName() {
returnname;
}
publicvoid setName(String name) {
this.name= name;
}
publicString getPronounce() {
returnpronounce;
}
publicvoid setPronounce(String pronounce) {
this.pronounce= pronounce;
}
publicString getExplain() {
returnexplain;
}
publicvoid setExplain(String explain) {
this.explain= explain;
}
publicString getAutonym() {
returnautonym;
}
publicvoid setAutonym(String autonym) {
this.autonym= autonym;
}
publicString getHomoionym() {
returnhomoionym;
}
publicvoid setHomoionym(String homoionym) {
this.homoionym= homoionym;
}
publicString getDerivation() {
returnderivation;
}
publicvoid setDerivation(String derivation) {
this.derivation= derivation;
}
publicString getExamples() {
returnexamples;
}
publicvoid setExamples(String examples) {
this.examples= examples;
}
}
在dao包建立AnimalDao.java
public class AnimalDao {
privatestatic AnimalDao animalDao;
privateSQLiteDatabase db;
/**
* 将构造方法私有化
*/
privateAnimalDao(Context context){
DBOpenHelperdbHelper =new DBOpenHelper(context);
db=dbHelper.openDatabase();
}
/**
* 获取AnimalDao的实例
*/
publicsynchronized static AnimalDao getInstance(Context context){
if(animalDao==null){
animalDao=newAnimalDao(context);
}
returnanimalDao;
}
/**
* 从数据库获取所有的动物类成语
*/
publicList<Animal> getAllAnimals(){
List<Animal>list=new ArrayList<Animal>();
Cursorcursor =db.query("animal",null, null,null,null,null,null);
if(cursor.moveToFirst()){
do{
Animalanimal=new Animal();
animal.setId(cursor.getInt(cursor.getColumnIndex("_id")));
animal.setName(cursor.getString(cursor.getColumnIndex("name")));
animal.setPronounce(cursor.getString(cursor.getColumnIndex("pronounce")));
animal.setAutonym(cursor.getString(cursor.getColumnIndex("antonym")));
animal.setHomoionym(cursor.getString(cursor.getColumnIndex("homoionym")));
animal.setDerivation(cursor.getString(cursor.getColumnIndex("derivation")));
animal.setExamples(cursor.getString(cursor.getColumnIndex("explain")));
list.add(animal);
}while(cursor.moveToNext());
}
returnlist;
}
}
进行单元测试:在test下建立AnimalDaotest.Java
public class AnimalDaoTest extends AndroidTestCase{
publicvoid testGetAllAnimals(){
AnimalDaoanimalDao=AnimalDao.getInstance(getContext());
List<Animal>animals=animalDao.getAllAnimals();
System.out.println(animals.size());
for(Animalanimal:animals){
System.out.println(animal.getName());
}
}}
出现下图视为测试成功
UI界面
Activity_main.xml 代码如下
<RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<TabHost
android:id="@android:id/tabhost"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
>
<LinearLayout
android:id="@+id/tab1"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
</LinearLayout>
<LinearLayout
android:id="@+id/tab2"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
</LinearLayout>
<LinearLayout
android:id="@+id/tab3"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
</LinearLayout>
</FrameLayout>
<TabWidget
android:id="@android:id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</TabWidget>
</LinearLayout>
</TabHost>
</RelativeLayout>
TabHost介绍
TabHost可以在界面中存放多个选项卡
1.TabHost常用组件
TabWidget : 该组件就是TabHost标签页中上部 或者 下部的按钮, 可以点击按钮切换选项卡;
TabSpec : 代表了选项卡界面, 添加一个TabSpec即可添加到
2. TabHost中;
-- 创建选项卡 : newTabSpec(String tag), 创建一个选项卡;
-- 添加选项卡 : addTab(tabSpec)
然后在res的values目录的string.xml文件中定义
<?xmlversion="1.0" encoding="utf-8"?>
<resources>
<stringname="app_name">HappyIdiom</string>
<stringname="action_settings">Settings</string>
<stringname="hello_world">Hello world!</string>
<stringname="title_activity_main">MainActivity</string>
<stringname="title_search">搜搜</string>
<string name="title_study">学习</string>
<string name="title_game">游戏</string>
<string name="title_save">收藏</string>
<string name="title_help">帮助</string>
<string name="animal">动物类</string>
<string name="number">数字类</string>
<string-arrayname="category">
<item>动物类</item>
<item>数字类</item>
<item>人物类</item>
<item>季节类</item>
<item>自然类</item>
<item>寓言类</item>
<item>其他类</item>
</string-array>
接下来在activity中建立MainActivity.java
publicclass MainActivity extends TabActivity {
private TabHost tabHost;
@Override
protected void onCreate(BundlesavedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
tabHost=getTabHost();
addTab("study",R.string.title_study,R.drawable.study,StudyActivity.class);
addTab("search",R.string.title_search,R.drawable.search,StudyActivity.class);
addTab("game",R.string.title_game,R.drawable.game,StudyActivity.class);
addTab("save",R.string.title_save, R.drawable.save, StudyActivity.class);
addTab("help",R.string.title_help, R.drawable.help, StudyActivity.class);
}
private void addTab(String tag,inttitle_introduction,int title_icon,Class ActivityClass){
tabHost.addTab(tabHost.newTabSpec(tag)
.setIndicator(getString(title_introduction),
getResources().getDrawable(title_icon))
.setContent(newIntent(this,ActivityClass)));
}
@Override
public boolean onCreateOptionsMenu(Menu menu){
// Inflate the menu; this adds itemsto the action bar if it is present.
getMenuInflater().inflate(R.menu.main,menu);
return true;
}}
在这个类里调用TabHost组件, 然后调用了抽取出来的自定义的方法addTob()添加了五个选项卡,方法的四个参数分别为每个选项卡的tag,指示器上显示的标题。,指示器上显示的图片,选项卡对应的内容。
中间出现的错误
1. 如果在非黑色背景下使用ListView控件时,Android默认可能在滚动ListView时这个列表控件的背景突然变成黑色。这样可能导致程序的黑色的背景和主程序的主题既不协调
2. 出现以下错误这是不能实例类java.lang.RuntimeException:Unable to instantiate activityComponentInfo
百度结果不能实例化Activity有以下二中情况:1.没有在Manifest.xml清单中注册该activity,或者在创建完activity后,修改了包名或者activity的类名,而配置清单中没有修改,造成不能实例化2.自己新建一个包,而配置的时候,使用默认包
- 乐学成语
- 乐学成语
- 乐学成语
- 乐学成语2
- 乐学成语
- 乐学成语
- 乐学成语案例
- Android---乐学成语
- 乐学成语
- 乐学成语
- 乐学成语2
- 17乐学成语
- 18乐学成语
- 19乐学成语
- 乐学成语作业
- 乐学成语
- 乐学成语
- 乐学成语
- VS通过MAP追踪异常代码的位置详解
- Spring 4.x 新特性:泛型依赖注入
- C#委托,事件与回调函数详解
- springmvc4 相关注解的详细讲解
- Google zxing实现二维码扫描完美解决方案
- 乐学成语
- mongodb创建表语句
- pytesser,图片文本识别工具
- 时钟、取模与环
- Sql入门
- jasmine测试框架学习笔记
- 【bzoj3110】【ZJOI2013】【K大数查询】【权值线段树套位置线段树】
- CentOS下安装mongodb
- android 修改viewpager切换速度