StackOverflow avec OnItemLongClick et ContextMenu
:salut:
J'ai un problème dans mon application. J'ai une ListView et j'amerais que lorsque l'on faitun click long sur un item un menu contextuel s'ouvre.
J'ai donc suivi ce tuto : Tuto ContextMenu
Mais j'obtiens une magnifique boucle infinie dans la méthode onItemLongClick et donc une erreur java.lang.StackOverflow:help:
Je n'arrive pas à comprendre d'où vient cette erreur
Voici le code de mon activity
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| private ArrayList<File> onBuildingHuntsList;
private AdapterView.OnItemLongClickListener onItemLongClickListener = new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
registerForContextMenu(view);
view.showContextMenu(); //La ligne 42 citée dans le message d'erreur
return true;
}
};
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
getMenuInflater().inflate(R.menu.edit_item_menu, menu);
}
@Override
public boolean onContextItemSelected(MenuItem item) {
switch (item.getItemId()){
case R.id.edit_item :
//TODO edit item
return true;
case R.id.delete_item:
//TODO delete item
return true;
}
return false;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_on_building_hunt);
//...
onBuildingHuntsList = huntDirectoryReader.getHuntFileList();
ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1);
adapter.addAll(onBuildingHuntsList);
adapter.notifyDataSetChanged();
ListView listView = (ListView) findViewById(R.id.on_building_hunt_list);
listView.setAdapter(adapter);
listView.setOnItemLongClickListener(onItemLongClickListener);
} |
et le message d'erreur :
Citation:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.chiaraercolani.treasurehunt, PID: 20811
java.lang.StackOverflowError: stack size 8MB
at android.widget.AbsListView.showContextMenuForChild(AbsListView.java:3160)
at android.view.View.showContextMenu(View.java:4929)
at android.app.Activity.openContextMenu(Activity.java:3226)
at com.example.chiaraercolani.treasurehunt.OnBuildingHuntActivity$1.onItemLongClick(OnBuildingHuntActivity.java:42)
at android.widget.AbsListView.showContextMenuForChild(AbsListView.java:3166)
at android.view.View.showContextMenu(View.java:4929)
at android.app.Activity.openContextMenu(Activity.java:3226)
at com.example.chiaraercolani.treasurehunt.OnBuildingHuntActivity$1.onItemLongClick(OnBuildingHuntActivity.java:42)
at android.widget.AbsListView.showContextMenuForChild(AbsListView.java:3166)
...