一个便签项目的源码解读

来源:互联网 发布:淘宝购物车业务流程图 编辑:程序博客网 时间:2024/05/21 05:06

项目地址
项目是一个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中数据项的数据结构

完毕

0 0