Salut à tous,
Alors volà j'ai un programme avec deux activity, j'ai crée le même menu d'option pout les deux activité. Et j'ai crée un menu contextuel sur ma première activité que s'affiche lorsque je clique sur un item de ma listview.. enfin ça c'est la théorie.
Mon problème c'est que je voulais afficher ma deuxième activité avec un OnLongClick sur ma listview (ça ça marche), et le menu contextuel avec un OnClick (donc un click court) et le problème et là ... de plus lorsque j'effectue le clic long, j'ai bien ma deuxième activité qui se lance, mais aussi le menu contextuel, cependant j'ai juste le temps de l'apparcevoir et de passer dans ma nouvelle activité. Gràce à un retour en arrière je reviens sur ma première activité et vois mon menu contextuel affiché.
Ce n'est donc pas trés pratique même si cela montre qu'il n'y a pas d'erreur dans mon code.
Je me suis donc dit je vais inversé et lancer ma 2éme activity sur un clic court et le menu contextuel sur un clic long .... ma 2éme activité se lance toujours aussi bien, par contre pas de menu contextuel.
j'ai lu sur d'autre forum que le fait d'avoir un menu d'option empécher l'apparition de mon menu contextuel est-ce vrai?
La solution proposé était de mettre tous les "case" dans un seul "switch" mais comment faire?
voici les codes de mes deux menus:
Pour lancer mon menu contextuel avec un clic court j'ai tente le code suivant, mais ça n'a pas l'air de marcher :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
47
48
49
50
51
52
53
54 /**-----------------------------Barre de Menu----------------------------*/ public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); MenuInflater inflater = new MenuInflater(this); inflater = getMenuInflater(); inflater.inflate(R.menu.menu, menu); return true; } public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.ack:Toast.makeText(this, "select an alarm", Toast.LENGTH_LONG).show(); break; case R.id.ackall:Toast.makeText(this, "Acknowledge all alarms", Toast.LENGTH_LONG).show(); ListView list = (ListView)findViewById(R.id.listalarme); AlarmeAdapter adapter = (AlarmeAdapter)list.getAdapter(); adapter.setEtat(AlarmeAdapter.ACKKED); list.invalidateViews(); break; case R.id.reset:Toast.makeText(this, "Select an alarm", Toast.LENGTH_LONG).show(); break; case R.id.resetall:Toast.makeText(this, "Reset all alarms", Toast.LENGTH_LONG).show(); break; case R.id.update:Toast.makeText(this, " alarms update", Toast.LENGTH_LONG).show(); break; } return true; } /**---------------------------------menu contextuel-----------------------------------------*/ public void onCreateContextMenu(ContextMenu menu_item,View v,ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu_item, v, menuInfo); MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.menu_itemlist, menu_item); } public boolean onContextItemSelected(MenuItem item){ switch (item.getItemId()) { case R.id.ack_item: Toast.makeText(this, "ack this item", Toast.LENGTH_SHORT).show(); return true; case R.id.reset_item: Toast.makeText(this, "reset this item", Toast.LENGTH_SHORT).show(); return true; } return super.onContextItemSelected(item); } }
Si quelqu'un a une idée du problème et par la même occasion d'une solution? Merci =)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 public void OnClick(ListAlarme item, int position) { // TODO Auto-generated method stub registerForContextMenu((ListView)findViewById(R.id.listalarme)); openContextMenu((ListView)findViewById(R.id.listalarme)); }
Partager