挑戰練習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.運行效果:

 


 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM