為響應(yīng)用戶點(diǎn)擊New Crime菜單項(xiàng),需實(shí)現(xiàn)新方法以添加新的Crime到crime列表。那么改如何操作呢?下面請(qǐng)看南昌網(wǎng)絡(luò)公司小編為您詳細(xì)介紹:
在CrimeLab.java中,新增addCrime()方法,實(shí)現(xiàn)添加Crime到列表,如下代碼所示。
添加新的crime(CrimeLab.java)
...
public void addCrime(Crime c) {
mCrimes.add(c);
}
public List getCrimes() {
return mCrimes;
}
...
既然可以手動(dòng)添加crime記錄,也就沒(méi)必要再讓程序自動(dòng)生成100條crime記錄了。在CrimeLab.java中,刪除生成隨機(jī)crime記錄的代碼,如下圖代碼所示。
代碼清單: 再見(jiàn),隨機(jī)crime記錄!(CrimeLab.java)
用戶點(diǎn)擊菜單中的菜單項(xiàng)時(shí),fragment會(huì)收到onOptionsItemSelected(MenuItem)方法的回調(diào)請(qǐng)求。傳入該方法的參數(shù)是一個(gè)描述用戶選擇的MenuItem實(shí)例。
當(dāng)前菜單僅有一個(gè)菜單項(xiàng),但菜單通常包含多個(gè)菜單項(xiàng)。通過(guò)檢查菜單項(xiàng)ID,可確定被選中的是哪個(gè)菜單項(xiàng),然后作出相應(yīng)的響應(yīng)。這個(gè)ID實(shí)際就是在菜單定義文件中賦予菜單項(xiàng)的資源ID。
在CrimeListFragment.java中,實(shí)現(xiàn)onOptionsItemSelected(MenuItem)方法響應(yīng)菜單項(xiàng)的選擇事件。在該方法中, 創(chuàng)建新的Crime 實(shí)例, 并將其添加到CrimeLab 中, 然后啟動(dòng)CrimePagerActivity實(shí)例,讓用戶可以編輯新創(chuàng)建的Crime記錄,如下代碼所示。
響應(yīng)菜單項(xiàng)選擇事件(CrimeListFragment.java)
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.fragment_crime_list, menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_item_new_crime:
Crime crime = new Crime();
CrimeLab.get(getActivity()).addCrime(crime);
Intent intent = CrimePagerActivity
.newIntent(getActivity(), crime.getId());
startActivity(intent);
return true;
default:
return super.onOptionsItemSelected(item);
}
}
注意,onOptionsItemSelected(MenuItem)方法返回的是布爾值。一旦完成菜單項(xiàng)事件處理,應(yīng)返回true值以表明全部任務(wù)已完成。另外,默認(rèn)case表達(dá)式中,如果菜單項(xiàng)ID不存在,超類版本方法會(huì)被調(diào)用。
運(yùn)行CriminalIntent應(yīng)用,嘗試使用菜單,添加一些crime記錄并進(jìn)行編輯。
以上就是南昌網(wǎng)絡(luò)公司小編為大家介紹的關(guān)于Android開發(fā)中創(chuàng)建并響應(yīng)菜單的方法,如果還有哪些不太明白的地方,可隨時(shí)來(lái)電和我們聯(lián)系,本公司專業(yè)為您解答。此外,想了解更多關(guān)于南昌網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)等方面的資訊,歡迎關(guān)注本公司官網(wǎng)動(dòng)態(tài)。