SQLiteOpenHelper&SharedPreferences练习

来源:互联网 发布:红旗歌舞团空难 知乎 编辑:程序博客网 时间:2024/05/21 17:14
目录结构:

package com.dc.app;import java.text.DecimalFormat;import java.util.Locale;import android.app.Activity;import android.app.AlertDialog;import android.app.Dialog;import android.app.Notification;import android.app.NotificationManager;import android.app.PendingIntent;import android.content.DialogInterface;import android.content.Intent;import android.content.SharedPreferences;import android.content.res.Configuration;import android.content.res.Resources;import android.net.Uri;import android.os.Bundle;import android.util.DisplayMetrics;import android.view.ContextMenu;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.Window;import android.view.WindowManager;import android.view.ContextMenu.ContextMenuInfo;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;public class App extends Activity {private static final String TAG="App";    /** Called when the activity is first created. */private EditText height,weight;private Button submit,nextpage,locale,toList;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);//        requestWindowFeature(Window.FEATURE_NO_TITLE);//        this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,  //                WindowManager.LayoutParams.FLAG_FULLSCREEN); //        this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);                setContentView(R.layout.main);                DisplayMetrics dm=new DisplayMetrics();        this.getWindowManager().getDefaultDisplay().getMetrics(dm);        int screenWidth=dm.widthPixels;        int screenHeight=dm.heightPixels;                Toast.makeText(this, screenWidth+"*"+screenHeight, Toast.LENGTH_LONG).show();//320*480                height=(EditText)this.findViewById(R.id.height);        weight=(EditText)this.findViewById(R.id.weight);        submit=(Button)this.findViewById(R.id.submit);        submit.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubString s_h=height.getText().toString();String s_w=weight.getText().toString();if(s_h.equals("")||s_w.equals("")){Toast.makeText(App.this, R.string.error, Toast.LENGTH_LONG).show();return;}double h=Double.parseDouble(s_h)/100;double w=Double.parseDouble(s_w);double bmi=w/(h*h);Toast.makeText(App.this, getText(R.string.result).toString()+new DecimalFormat("0.00").format(bmi), Toast.LENGTH_LONG).show();if(bmi>25){showNotify("减肥通知", "您应该减肥啦!");}else if(bmi<20){showNotify("增肥计划", "您应该多吃点!");}else{showNotify("好身材", "您应该保持您的身材!");}}});        nextpage=(Button)findViewById(R.id.nextpage);        nextpage.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubIntent intent=new Intent();intent.setClass(App.this, Report.class);Bundle bundle=new Bundle();bundle.putString("key_height", height.getText().toString());bundle.putString("key_weight", weight.getText().toString());intent.putExtras(bundle);//附加物,为意图追加额外的数据startActivity(intent);}});        locale=(Button)findViewById(R.id.locale);        locale.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubResources res=getResources();Configuration config=res.getConfiguration();if(config.locale==Locale.SIMPLIFIED_CHINESE){config.locale=Locale.ENGLISH;}else{config.locale=Locale.SIMPLIFIED_CHINESE;}DisplayMetrics dm=res.getDisplayMetrics();res.updateConfiguration(config, dm);}                });        toList=(Button)findViewById(R.id.toList);        toList.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubIntent intent = new Intent();intent.setClass(App.this, DummyNote.class);startActivity(intent);}                });    }        private void showNotify(String title,String content){    Notification notice=new Notification();    notice.icon=android.R.drawable.stat_sys_warning;    notice.tickerText=getText(R.string.label);    notice.when=10L;    notice.defaults=Notification.DEFAULT_SOUND;    notice.setLatestEventInfo(this, title,content, PendingIntent.getActivity(this, 0, null, 0));        NotificationManager manager=(NotificationManager)getSystemService(this.NOTIFICATION_SERVICE);    manager.notify(0,notice);    }@Overridepublic boolean onContextItemSelected(MenuItem item) {// TODO Auto-generated method stubreturn super.onContextItemSelected(item);}@Overridepublic void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {// TODO Auto-generated method stubsuper.onCreateContextMenu(menu, v, menuInfo);}private static final int DIALOG_ABOUT = 1;@Overrideprotected Dialog onCreateDialog(int id) {// TODO Auto-generated method stubswitch (id) {case DIALOG_ABOUT:Dialog loginDialog=new AlertDialog.Builder(this).setTitle("BMI").setMessage(R.string.label2).setCancelable(true).setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// TODO Auto-generated method stubdialog.cancel();}}).setNegativeButton(R.string.homepage, new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// TODO Auto-generated method stubdialog.cancel();Uri uri=Uri.parse(getString(R.string.uri));Intent intent=new Intent(Intent.ACTION_VIEW,uri);startActivity(intent);}}).create();loginDialog.setCanceledOnTouchOutside(true);return loginDialog;default:break;}return super.onCreateDialog(id);}public static final int menu_id_about=1;public static final int menu_id_exit=2;@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// TODO Auto-generated method stub menu.add(0, menu_id_about, 0, R.string.about).setShortcut('1', 'a');//设置快捷键       menu.add(0, menu_id_exit, 0, R.string.exit).setShortcut('2', 'e');//设置快捷键 return super.onCreateOptionsMenu(menu);}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {// TODO Auto-generated method stubswitch (item.getItemId()) {case menu_id_about:showDialog(DIALOG_ABOUT);break;case menu_id_exit:save();this.finish();break;default:break;}return super.onOptionsItemSelected(item);}@Overridepublic boolean onPrepareOptionsMenu(Menu menu) {// TODO Auto-generated method stubmenu.findItem(menu_id_about).setVisible(true).setIcon(android.R.drawable.ic_menu_info_details);menu.findItem(menu_id_exit).setVisible(true).setIcon(android.R.drawable.ic_menu_close_clear_cancel);return super.onPrepareOptionsMenu(menu);}private void save(){SharedPreferences setting=this.getPreferences(Activity.MODE_PRIVATE);setting.edit().putString("HEIGHT", height.getText().toString()).putString("WEIGHT", weight.getText().toString()).commit();}private void read(){SharedPreferences setting=this.getPreferences(Activity.MODE_PRIVATE);height.setText(setting.getString("HEIGHT", ""));weight.setText(setting.getString("WEIGHT", ""));}@Overrideprotected void onPause() {// TODO Auto-generated method stubsuper.onPause();save();}@Overrideprotected void onResume() {// TODO Auto-generated method stubsuper.onResume();read();}        }

package com.dc.helper;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;public class DatabaseHelper extends SQLiteOpenHelper {public static final String databaseName="bmi.db";public static final String tableName="notes";public static final int databaseVersion=1;public static final String field0="_id";public static final String field1="note";public static final String field2="created";//创建或打开数据库public DatabaseHelper(Context context) {super(context, databaseName, null, databaseVersion);// TODO Auto-generated constructor stub}//当数据库被创建时触发创建表@Overridepublic void onCreate(SQLiteDatabase db) {// TODO Auto-generated method stubString sql="create table "+tableName+"("+field0+" INTEGER PRIMARY KEY,"+field1+" TEXT,"+field2+" INTEGER);";db.execSQL(sql);}//升级数据库时触发@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {// TODO Auto-generated method stubString sql="DROP TABLE IF EXISTS "+tableName;db.execSQL(sql);onCreate(db);}}

package com.dc.adaper;import java.text.SimpleDateFormat;import java.util.Date;import android.content.ContentValues;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import com.dc.helper.DatabaseHelper;public class DatabaseAdaper {Context content;DatabaseHelper helper;SQLiteDatabase db;public DatabaseAdaper(Context content){this.content=content;open();}public void open(){helper=new DatabaseHelper(content);//创建或打开数据库db=helper.getWritableDatabase();//真正创建}public void close(){db.close();}public Cursor list(){//return db.rawQuery("SELECT * FROM "+DatabaseHelper.tableName, null);return db.query(DatabaseHelper.tableName, new String[]{DatabaseHelper.field0,DatabaseHelper.field1,DatabaseHelper.field2}, null, null, null, null, null);}public long insert(String note){Date now=new Date();SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");ContentValues values=new ContentValues();values.put(DatabaseHelper.field1, note);values.put(DatabaseHelper.field2, sdf.format(now));return db.insert(DatabaseHelper.tableName, null, values);}public boolean delete(long id){return db.delete(DatabaseHelper.tableName, DatabaseHelper.field0+"="+id, null)>0;}public Cursor get(long id){Cursor cursor=db.query(DatabaseHelper.tableName, new String[]{DatabaseHelper.field0,DatabaseHelper.field1,DatabaseHelper.field2}, DatabaseHelper.field0+"="+id, null, null, null, null);if(cursor!=null){cursor.moveToFirst();}return cursor;}public boolean update(long id,String note){ContentValues values=new ContentValues();values.put(DatabaseHelper.field1, note);return db.update(DatabaseHelper.tableName, values, DatabaseHelper.field0+"="+id, null)>0;}}