나는 DialogFragment를 확장하는 클래스가 있는데, 여기서는 ListView를 보여주고있다. 이 목록에있는 항목에 대해 LongPress 옵션을 갖고 싶습니다. 따라서 onCreateContextMenu
및 onContextItemSelected
을 재정의했습니다. 상황에 맞는 메뉴가 올바른 옵션으로 표시됩니다.onContextMenuClosed extends DialogFragment
내가 겪고있는 문제는 onContextItemSelected
방법에서 getDialog().dismiss()
으로 전화 할 수 없다는 것입니다.
DialogFragment를 확장하는 클래스의 onContextItemSelected
메서드 내에서 DialogFragment를 확장하는 클래스를 닫는 적절한 방법은 무엇입니까?
/*
* (non-Javadoc)
* @see android.support.v4.app.Fragment#onCreateContextMenu(android.view.ContextMenu, android.view.View, android.view.ContextMenu.ContextMenuInfo)
*/
@Override
public void onCreateContextMenu(ContextMenu menu, View view, ContextMenuInfo menuInfo)
{
if(view.getId() == listView.getId())
{
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)menuInfo;
Industry industry = (Industry) listView.getItemAtPosition(info.position);
menu.setHeaderTitle(industry.name);
menu.add(Menu.NONE, USE_INDUSTRY, 0, USE_INDUSTRY_TEXT);
}
}
/*
* (non-Javadoc)
* @see android.support.v4.app.Fragment#onContextItemSelected(android.view.MenuItem)
*/
@Override
public boolean onContextItemSelected(MenuItem item)
{
if(item.getItemId() == USE_INDUSTRY)
{
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)item.getMenuInfo();
Industry industry = (Industry) listView.getItemAtPosition(info.position);
MyApplication.BUS.post(new IndustryEvent(industry.ID, -2));
getDialog().dismiss();
}
return true;
}
일부 코드를 게시하십시오. –
요청한대로 코드를 추가했습니다. – drspaceboo