zoukankan      html  css  js  c++  java
  • 挑战练习13.6 删除crime 记录

    CriminalIntent应用目前不支持删除现有crime记录。请为CrimeFragment添加菜单项,允许用户删除当前crime记录。用户点击删除菜单项后,记得调用CrimeFragment托管活动的finish()方法回退到前一个activity界面。


    步骤跟书里添加的那段差不多:

    1.创建菜单资源,在res/menu目录下添加fragment_crime.xml文件,图标可以自己做,这里略

    1 <?xml version="1.0" encoding="utf-8"?>
    2 <menu xmlns:android="http://schemas.android.com/apk/res/android"
    3     xmlns:app="http://schemas.android.com/apk/res-auto">
    4     <item
    5         android:id="@+id/delete_crime"
    6         android:icon="@drawable/ic_menu_delete"
    7         app:showAsAction="ifRoom|withText"
    8         android:title="delete_crime" />
    9 </menu>

    2.在CrimeFragment.java中,覆盖onCreateOptionsMenu(Menu, MenuInflater)方法,实例化fragment_crime.xml中定义的菜单

    1 @Override
    2     public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    3         super.onCreateOptionsMenu(menu, inflater);
    4         inflater.inflate(R.menu.fragment_crime, menu);
    5     }

    3.定义CrimeFragment.onCreate(Bundle) 方法, 调用setHasOptionsMenu方法让FragmentManager知道CrimeFragment需接收选项菜单方法回调。

    1 @Override
    2     public void onCreate(@Nullable Bundle savedInstanceState) {
    3         super.onCreate(savedInstanceState);
    4 
    5         UUID crimeId = (UUID)getArguments().getSerializable(ARG_CRIME_ID);
    6         mCrime = CrimeLab.get(getActivity()).getCrime(crimeId);
    7 
    8         setHasOptionsMenu(true);
    9     }

    4.为了响应用户点击Delete Crime菜单项,需实现新方法以crime页删除当前Crime。在CrimeLab.java中,新增一个removeCrime()方法。

     1 public void removeCrime(Crime c) { 2 mCrimes.remove(c); 3 } 

    5.在CrimeFragment.java中,实现onOptionsItemSelected(MenuItem)方法,以响应菜单项的选择事件,通过检查菜单项ID判断选的是哪个菜单项。在该方法中,删除当前的Crime实例,最后调用CrimeFragment托管活动的finish()方法回退到前一个activity界面。

     1 @Override
     2     public boolean onOptionsItemSelected(MenuItem item) {
     3         switch (item.getItemId()) {
     4             case R.id.delete_crime:
     5                 CrimeLab.get(getActivity()).removeCrime(mCrime);
     6                 getActivity().finish();
     7                 return true;
     8             default:
     9                 return super.onOptionsItemSelected(item);
    10         }
    11     }

    6.运行效果:


     

  • 相关阅读:
    常用注解
    代码自动生成插件:
    jsoup爬虫技术+druid连接池

    图书管理系统-项目介绍
    shiro
    (C#) What is the difference between "const" and "static readonly" ?
    What is a Windows USB device path and how is it formatted?
    (C/C++ interview) Static 详解
    Cpk
  • 原文地址:https://www.cnblogs.com/real1587/p/10026991.html
Copyright © 2011-2022 走看看