项目地址
项目是一个memo便签app,使用了sqlite作为数据库,功能比较简单。记录下查看源码学到的东西。
主界面(MyActivity)
MyActivity中使用
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main_menu_actions, menu);
return super.onCreateOptionsMenu(menu);
}
创建了选项菜单,然后通过
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_add:
Intent intent = new Intent(this, EditNoteActivity.class);
startActivity(intent);
return true;
default:
return super.onOptionsItemSelected(item);
}
}
将点击增加菜单时的操作与EditNoteActivity(编辑activity)关联起来。
另外,通过在OnCreate()中调用
private void initActionBar() {
SystemBarTintManager tintManager = new SystemBarTintManager(this);
tintManager.setStatusBarTintEnabled(true);
tintManager.setNavigationBarTintEnabled(true);
tintManager.setTintColor(Color.parseColor(getString(R.string.actionbar_color)));
ActionBar actionBar = getActionBar();
if (actionBar != null) {
actionBar.setBackgroundDrawable(getResources().getDrawable(R.drawable.actionbar_bg));
}
}
设置了沉浸式状态栏。在res/drawable/actionbar_bg.xml中定义了状态栏的属性。SystemBarTintManager类的依赖是在app的build.gradle中定义的“compile ‘com.readystatesoftware.systembartint:systembartint:1.0.3’”
在布局homepage.xml中以静态形式嵌入了NotesListFragment
NotesListFragment
该Fragment实现了便签项的列表显示,在onActivityCreated()中首先调用initListView()从数据库中将数据存入数据源mNoteArray中,然后给Listview设置适配器,最后调用适配器的notifyDataSetChanged()刷新数据。
在适配器的ItemClickListener()设置了编辑、删除时的操作。其中,编辑时会调用EditNoteActivity。
EditNoteActivity
该activity同样使用了沉浸式状态栏,不多说。还使用了动态创建Fragment的方法
mEditeNoteFragment = EditeNoteFragment.newInstance();
if (savedInstanceState == null) {
getFragmentManager().beginTransaction()
.add(R.id.container, mEditeNoteFragment)
.commit();
}
与EditeNoteFragment关联起来。
EditeNoteFragment
其中的onActivityCreated()中通过getActivity().getIntent().getExtras()获取从NotesListFragment中传给EditNoteActivity的参数,以判断是编辑还是新增。如果是编辑,通过异步任务QueryNoteTask获取数据库中的数据,完成后在onPostExecute()中设置界面空间的内容。
这里说一下getContentResolver(),通过getContentResolver()可以得到当前应用的 ContentResolver实例,定义在AndroidManifest.xml文件中。
其他
NoteDbHelper继承自SQLiteOpenHelper,提供了数据库自动创建、升级(未实现)功能。
NoteDatabase是数据库创建的模板类
NoteDbProvider提供了与数据库进行增删改查的功能
NoteItem类是Listview中数据项的数据结构
完毕