一个便签项目的源码解读

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

完毕

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值