में कॉल नहीं किया गया है मेरे पास एक संवाद है जो आइटमों की एक सूची दिखाता है, मुझे इस सूची में आइटम को संपादित/हटाने में सक्षम होना चाहिए, इसलिए जब मैं उपयोगकर्ता पर लंबे समय तक दबाता हूं तो मैं एक संदर्भ मेनू डालता हूं आइटम को वे चुन सकते हैं कि वे क्या करना चाहते हैं (आइटम को संपादित या हटाएं)।onContextItem चयनित चयन डायलॉगफ्रैगमेंट
समस्या यह है कि onContextItemSelected
कभी भी कॉल नहीं किया जाता है जब संदर्भ मेनू में कोई आइटम चुना जाता है।
मैंने यह देखने के लिए जांच की कि क्या डायलॉग खंड बनाने वाली गतिविधि कॉलबैक प्राप्त कर रही है, लेकिन ऐसा नहीं है तो ऐसा क्यों नहीं कहा जा रहा है? क्या आप एक संवाद में एक संदर्भ मेनू नहीं कर सकते हैं?
public class TypesDialogList extends DialogFragment implements LoaderManager.LoaderCallbacks<Cursor>,OnItemClickListener,OnCreateContextMenuListener{
ListView lv;
SimpleCursorAdapter mAdapter;
private int EDIT_TYPE = 1;
private int DELETE_TYPE = 2;
OnEditType mType;
public Dialog onCreateDialog(Bundle state){
final View v = getActivity().getLayoutInflater().inflate(R.layout.layer_dialog_layout, null, false);
lv = (ListView)v.findViewById(R.id.listView1);
lv.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
lv.setOnItemClickListener(this);
lv.setOnCreateContextMenuListener(this);
return new AlertDialog.Builder(getActivity()).setView(v).setPositiveButton("Add Type", new OnClickListener(){
public void onClick(DialogInterface dialog, int which) {
}
}).setTitle("Type's").create();
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo){
super.onCreateContextMenu(menu, v, menuInfo);
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo;
long id = info.id;
if(id > 3){
menu.setHeaderTitle("Type Menu");
menu.add(Menu.NONE, EDIT_TYPE, 1, "Edit");
menu.add(Menu.NONE, DELETE_TYPE, 2, "Delete");
}else{
Toast.makeText(getActivity(),"Cannot edit type",Toast.LENGTH_SHORT).show();
}
}
@Override
public boolean onContextItemSelected(MenuItem item) {
super.onContextItemSelected(item);
AdapterView.AdapterContextMenuInfo oMenuInfo = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
long id = oMenuInfo.id;
if(item.getItemId() == EDIT_TYPE){
}else if(item.getItemId() == DELETE_TYPE){
}
return true;
}
}
नीचे उत्तर का चयन, यह – Nasrudeen
काम कर रहा है शायद होस्टिंग गतिविधि 'onContextItemSelected' कार्यान्वयन जो फोन नहीं करता है' super' है। यह मेरे (कुछ हद तक समान) मामले में समस्या थी। – Stan