我正在寻找一种方法,当用户使用caseR.id.delete:
从数据库中删除项目时,会在显示屏底部弹出Snackbox。下面我从片段中附加了代码。如果您需要更多来自不同领域的代码,请告诉我们。
/**
* A simple {@link Fragment} subclass.
*/
public class MainActivityListFragment extends ListFragment {
private ArrayList<Note> notes;
private NoteAdapter noteAdapter;
@Override
public void onActivityCreated(Bundle savedInstanceState){
super.onActivityCreated(savedInstanceState);
/*
String[] values = new String[] {"Android", "iPhone", "Windows", "WebOS", "Android", "iPhone", "Windows", "WebOS" };
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, values);
setListAdapter(adapter);
*/
NotesDbAdapter dbAdapter = new NotesDbAdapter(getActivity().getBaseContext());
dbAdapter.open();
notes = dbAdapter.getAllNotes();
dbAdapter.close();
noteAdapter = new NoteAdapter(getActivity(), notes);
setListAdapter(noteAdapter);
getListView().setDivider(null);
getListView().setDividerHeight(0);
registerForContextMenu(getListView());
}
@Override
public void onListItemClick(ListView l, View v, int position, long id){
super.onListItemClick(l, v, position, id);
launchNoteDetailActivity(MainActivity.FragmentToLaunch.VIEW, position);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo){
super.onCreateContextMenu(menu, v, menuInfo);
MenuInflater menuInflater = getActivity().getMenuInflater();
menuInflater.inflate(R.menu.long_press_menu, menu);
}
@Override
public boolean onContextItemSelected(MenuItem item){
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
int rowPosition = info.position;
Note note = (Note) getListAdapter().getItem(rowPosition);
switch (item.getItemId()){
case R.id.edit:
launchNoteDetailActivity(MainActivity.FragmentToLaunch.EDIT, rowPosition);
Log.d("menu clicks", "we pressed edit");
return true;
case R.id.delete:
NotesDbAdapter dbAdapter = new NotesDbAdapter(getActivity().getBaseContext());
dbAdapter.open();
dbAdapter.deleteNote(note.getId());
notes.clear();
notes.addAll(dbAdapter.getAllNotes());
noteAdapter.notifyDataSetChanged();
dbAdapter.close();
}
return super.onContextItemSelected(item);
}
private void launchNoteDetailActivity(MainActivity.FragmentToLaunch ftl, int position){
Note note = (Note) getListAdapter().getItem(position);
Intent intent = new Intent(getActivity(), NoteDetailActivity.class);
intent.putExtra(MainActivity.NOTE_TITLE_EXTRA, note.getTitle());
intent.putExtra(MainActivity.NOTE_MESSAGE_EXTRA, note.getMessage());
intent.putExtra(MainActivity.NOTE_CATEGORY_EXTRA, note.getCategory());
intent.putExtra(MainActivity.NOTE_DATE_EXTRA, note.getDate());
intent.putExtra(MainActivity.NOTE_ID_EXTRA, note.getId());
switch(ftl){
case VIEW:
intent.putExtra(MainActivity.NOTE_FRAGMENT_TO_LOAD_EXTRA, MainActivity.FragmentToLaunch.VIEW);
break;
case EDIT:
intent.putExtra(MainActivity.NOTE_FRAGMENT_TO_LOAD_EXTRA, MainActivity.FragmentToLaunch.EDIT);
}
startActivity(intent);
}
}
答案 0 :(得分:0)
在build.gradle中添加最新的设计库。
compile 'com.android.support:design:X.X.X' // where X.X.X version
然后,在你的片段中执行:
Snackbar
.make(view, "Item deleted",Snackbar.LENGTH_SHORT)
.show();
参数view
可以是片段的根布局。你只需要它的参考。
有关详细信息,请参阅http://www.materialdoc.com/snackbar/
答案 1 :(得分:0)
添加设计库
Compile 'com.android.support:design:X.X.X'
代码:
case R.id.delete:
NotesDbAdapter dbAdapter = new NotesDbAdapter(getActivity().getBaseContext());
dbAdapter.open();
dbAdapter.deleteNote(note.getId());
notes.clear();
notes.addAll(dbAdapter.getAllNotes());
noteAdapter.notifyDataSetChanged();
dbAdapter.close();
// Show SNACK Bar
mRoot = (RelativeLayout) view.findViewById(R.id.mainrl);
Snackbar snackbar = Snackbar.make(mRoot , "Item Deleted", Snackbar.LENGTH_LONG);
snackbar.show();
此处 mRoot 是您片段的主要根布局。