今日小结 4.1
- 數據庫 的創建,記錄的添加,修改,刪除 ? OK
- 生命周期,活動的創建、銷毀、跳轉
1.面向對象的程序設計的代碼執行順序好比是 數據結構中圖的廣度優先遍歷
比如:
public void onClick(View v) {Log.d("mylog","onClick");Intent it = new Intent (MainActivity.this,SubActivity.class);it.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);Log.d("mylog","CLEAR_TOP");startActivity(it);Log.d("mylog","startActivity(it)");}onClick事件(對象)的代碼中會從上到下執行每一條代碼,這一層(onClick事件)的代碼遍歷完成后再往下,即 再去執行startActivity那一層的代碼
so, log.d 的輸出信息依次是:
04-01 09:29:43.281 10291-10291/? D/mylog: onClick //這一層
04-01 09:29:43.283 10291-10291/? D/mylog: CLEAR_TOP
04-01 09:29:43.325 10291-10291/? D/mylog: startActivity(it)
04-01 09:29:43.351 10291-10291/? D/mylog: onCreate SubActivity //下一層
?
2.銷毀前一個活動
3.ContentValues 方式 把記錄寫入數據表
// ContentValues?其實就是一個哈希表HashMap, key值是字段名稱,
?????// Value值是字段的值。然后 通過 ContentValues 的 put 方法就可以
?????// 把數據放到ContentValues中,然后插入到表中去
?
4.對象數組
public void update(int id, String name, String birthday){String whereClause = "id=?"; //更新哪一個,用占位符的形式表示String whereArgs[] = new String[]{String.valueOf(id)}; //填入占位符ContentValues cv = new ContentValues();cv.put("name",name);cv.put("birthday",birthday);this.db.update(TABLENAME, cv, whereClause, whereArgs);this.db.close();}?
5.構造函數是在實例化對象的時候執行,但是 onCreate() 方法不一定是在實例化對象時候執行
在Activity的子類當中,onCreate()是最先執行的,在這個方法中完成活動的一些初始化操作(即只做一次的操作)
比如加載布局,綁定控件(實例化對象),開啟監聽事件,初始化設置等操作:
(1)加載布局
(2)綁定控件(實例化對象)
(3)開啟監聽事件(有點像單片機中的 開啟中斷)
(4)初始化設置
@Overrideprotected void onCreate(Bundle savedInstanceState) {//加載布局super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//綁定控件mTabAdd = (ImageButton) findViewById(R.id.ib_bottombar_add);mTabEdit= (ImageButton) findViewById(R.id.ib_bottombar_edit);//開啟監聽事件mTabEdit.setOnClickListener(this);mTabAdd.setOnClickListener(this);//設置默認的片段視圖Fragment setDefaultFragment();}?
然后去寫初始化設置的具體方法
private void setDefaultFragment() {FragmentManager fragmentManager = getFragmentManager(); //取得和實例化Fragment管理器FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); //開啟Fragment事務mAdd = new ContentFragment(); //實例化Fragment類(即Fragment的控制器)fragmentTransaction.replace(R.id.framelayout_displayFragment, mAdd); //更新布局,在容器FrameLayout中更新fragmentfragmentTransaction.commit(); //提交事務}?
最后寫監聽事件里的具體方法,(相當于寫中斷函數,讓機子反復監聽、執行的操作)
/*覆寫這個類中(已經實現了 View.OnClickListener 接口)單擊事件的方法*/@Overridepublic void onClick(View v) {FragmentManager fragmentManager = getFragmentManager(); //取得和實例化Fragment管理器FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); //開啟Fragment事務switch (v.getId()) {case R.id.ib_bottombar_add:if (mAdd == null) { //如果ContentFragment還沒有創建(對象)則創建(即實例化ContentFragment類)mAdd = new ContentFragment();}fragmentTransaction.replace(R.id.framelayout_displayFragment, mAdd); //更新布局break;case R.id.ib_bottombar_edit:if(mEdit == null){mEdit = new ContentEditFragment();}fragmentTransaction.replace(R.id.framelayout_displayFragment,mEdit);break;default:break;}fragmentTransaction.commit(); //提交事務(提交更改)}?
?
在SQLiteOpenHelper的子類中,onCreate()并不是在實例化對象:
mdbhelper = new DBHelper(SQLiteActivity.this); //實例化SQLiteOpenHelper后執行,而是要在
mdbhelper.getWritableDatabase()方法后,也就是創建數據庫后執行。
因此,可以在這個onCreate()方法中,寫入sql 語句去創建數據表
?
6.SQLite數據庫使用注意事項:
(1)String 書寫SQL語句 注意空格
創建數據表:
String sql = "CREATE TABLE " + TBNAME_MYCLOTHES //SQL語句,創建數據表+ "(id INTEGER PRIMARY KEY,"+ "name VARCHAR(50) NOT NULL,"+ "category VARCHAR(50) NOT NULL,"+ "warmindex INTEGER NOT NULL,"+ "occasion VARCHAR(50) NOT NULL,"+ "time VARCHAR(50) NOT NULL)";插入一條記錄
public void insert(String name, String category, Integer warmindex, String occasion, String time){Log.d("mylog","進入了 插入記錄到數據表");String sql = "INSERT INTO " + this.TBNAME+ "(name,category,warmindex,occasion,time) VALUES(?,?,?,?,?)";Object[] args = new Object[]{name,category,warmindex,occasion,time}; //對象數組this.db.execSQL(sql,args);this.db.close(); //關閉數據表Log.d("mylog","完成了 插入記錄到數據表");}?
(2)SQLite數據庫寫入SD卡中
1)數據庫所在目錄不會自動創建,需要File類先判斷再創建目錄
2)記得添加權限
轉載于:https://www.cnblogs.com/Chongger/p/5343999.html
總結
- 上一篇: JaveWeb中实现分页的总结
- 下一篇: Netflix是如何构建代码的