Android记事本【4】

承接上文。

一、点击确定键保存数据

初始化列表后,点击进入该记事的编辑页面。但是现在列表还是空的,需要我们添加个记事。所以修改NotesEditActivity类,在onCreate函数中添加如下代码:

 

confirmBtn.setOnClickListener(newView.OnClickListener() {

           

            public void onClick(View view) {

                Bundle bundle = new Bundle();

                bundle.putString(NotesDbAdapter.KEY_TITLE,titleEdit.getText().toString());

                bundle.putString(NotesDbAdapter.KEY_BODY,bodyEdit.getText().toString());

               

                if (rowId != null) {

                    bundle.putLong(NotesDbAdapter.KEY_ROWID,rowId);

                }

               

                Intent iRes = new Intent();

                iRes.putExtras(bundle);

                setResult(RESULT_OK, iRes);

                finish();

            }

        });

 

这样,当我们点击“Confirm”键时就会保存填写好的数据。

测试运行,录入数据保存后,回到主界面,还是没有数据,为什么?

 

是因为点击确认键后,我们把数据保存在一个bundle中,但返回的主界面的时候没有去接收它,进行保存。所以需要在NotespadActivity添加如下代码:

 

@Override

    protected voidonActivityResult(int requestCode, int resultCode, Intent data) {

        super.onActivityResult(requestCode,resultCode, data);

       

        Bundle extras =data.getExtras();

        switch (requestCode) {

        case ACTIVITY_EDIT:

            Long rowId =extras.getLong(NotesDbAdapter.KEY_ROWID);

            if (rowId != null) {

                String title =extras.getString(NotesDbAdapter.KEY_TITLE);

                String body =extras.getString(NotesDbAdapter.KEY_BODY);

                db.updateNote(rowId,title, body);

            }

            break;

        case ACTIVITY_CREATE:

            String title =extras.getString(NotesDbAdapter.KEY_TITLE);

            String body =extras.getString(NotesDbAdapter.KEY_BODY);

            db.createNote(title,body);

            break;

        }

    }

 

这样就可以把数据存到数据库,并且在列表上显示出来。

二、在主界面点击列表项进入编辑页面

这时点击列表还没有反应,在NotepadActivity中添加如下函数:

 

@Override

    protected void onListItemClick(ListView l, View v, int position, long id) {

        super.onListItemClick(l,v, position, id);

        Intent i = newIntent(this, NoteEditActivity.class);

        cur.moveToPosition(position);

        i.putExtra(NotesDbAdapter.KEY_TITLE, cur.getString(cur.getColumnIndexOrThrow(NotesDbAdapter.KEY_TITLE)));

        i.putExtra(NotesDbAdapter.KEY_BODY, cur.getString(cur.getColumnIndexOrThrow(NotesDbAdapter.KEY_BODY)));

        i.putExtra(NotesDbAdapter.KEY_ROWID, id);

        startActivityForResult(i, ACTIVITY_EDIT);

    }

这样点击某项进入编辑页面,是空的。

因为还需要在NotesEditActivity的onCreate函数中添加如下代码,把数据库中的数据填回:

 

  Bundle extras = getIntent().getExtras();

      if (extras!= null) {

          String title =extras.getString(NotesDbAdapter.KEY_TITLE);

          String body =extras.getString(NotesDbAdapter.KEY_BODY);

          rowId =extras.getLong(NotesDbAdapter.KEY_ROWID);

 

          if(title != null)

              titleEdit.setText(title);

          if (body!= null)

              bodyEdit.setText(body);

      }

三、删除某项

好,到此基本结事。最后别忘了在NotepadActivity的上下文菜单中定义删除:

创建上下文菜单:

@Override

  public void onCreateContextMenu(ContextMenu menu, View v,

          ContextMenuInfo menuInfo) {

      super.onCreateContextMenu(menu,v, menuInfo);

      menu.add(0, DELETE_ID, 0,R.string.delete_note);

  }

选中项被删除:

  @Override

  public boolean onContextItemSelected(MenuItemitem) {

      switch (item.getItemId()) {

      case DELETE_ID:

          AdapterContextMenuInfo info= (AdapterContextMenuInfo)item.getMenuInfo();

          db.deleteNote(info.id);

          listAllNotes();

          return true;

      }

      return super.onContextItemSelected(item);

  }

 

四、最后的问题:

当在编辑页面点击手机回退键时,会弹出报错提示,请想下为什么?下节回答,并作点总结,附上源码。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值