gpt4 book ai didi

android - 使用点击上下文菜单选项打开上下文菜单

转载 作者:行者123 更新时间:2023-11-30 02:53:32 25 4
gpt4 key购买 nike

我想在上下文菜单中列出食物类型、子类型和食物。这非常有效。但是当我选择一个选项时,我想重新打开上下文菜单并加载不同的选项。问题是,在我选择一个选项后,上下文菜单会重新打开新选项,但它会立即关闭。

我的代码:

// This opens my context menu, works perfectly
public void onClick(View v)
{
Intent intent = new Intent(getBaseContext(), OrderInfo.class);

thisView = v;
registerForContextMenu(v);
openContextMenu(v);
}

@Override
public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);

// When this first opens, the value of contextOption is 0.
// This changes when I choose an option in the context menu
// I store the displayable data in Hashmaps
switch(contextOption)
{
case 0:
{
menu.setHeaderTitle("Food Types");
for (final Map.Entry typeEntry : MainActivity.food_types.entrySet()) {
final int Key = Integer.parseInt((String) typeEntry.getKey());
String data = (String) typeEntry.getValue();
String[] parts = data.split(";");
menu.add(0, v.getId(), 0, parts[0]);
}
}
break;
case 1:
{
menu.setHeaderTitle("Food Subtypes");
for (final Map.Entry typeEntry : MainActivity.food_subtypes.entrySet()) {
final int Key = Integer.parseInt((String) typeEntry.getKey());
String data = (String) typeEntry.getValue();
String[] parts = data.split(";");
menu.add(0, v.getId(), 0, parts[1]);
}
}
break;
case 2:
{
menu.setHeaderTitle("Foods");
for (final Map.Entry typeEntry : MainActivity.foods.entrySet()) {
final int Key = Integer.parseInt((String) typeEntry.getKey());
String data = (String) typeEntry.getValue();
String[] parts = data.split(";");
menu.add(0, v.getId(), 0, parts[1]);
}
}
break;
}
}
@Override
public boolean onContextItemSelected(MenuItem item) {

boolean foundValue = false;

switch(contextOption)
{
case 0:
{
for (final Map.Entry typeEntry : MainActivity.food_types.entrySet()) {
final int Key = Integer.parseInt((String) typeEntry.getKey());
String data = (String) typeEntry.getValue();
String[] parts = data.split(";");

if(item.getTitle().equals(parts[0]))
{
foundValue = true;
if(parts[1].equals("1"))
{
// if the food type has subtypes
contextOption = 1;
contextChosenID = Key;
}
else
{
contextOption = 2;
contextChosenID = Key;
}
}
else
{

}
}
}
break;
case 1:
{
// Stuff happens
}
break;
case 2:
{
// Stuff happens
}
break;
}

// I put this here because I want to run the open command anyway, just for the testing
openContextMenu(thisView); // This runs, but after it opened the context menu again with the new data it closes immediately
return false;
}

你能给我一些解决问题的建议吗?

最佳答案

我怀疑问题在于仍有未决事件将在您的代码运行后关闭上下文菜单。将您的代码用于在 Runnable 中显示新的上下文菜单并将其发布到 Handler 将延迟执行您的代码,直到上下文菜单关闭之后,因此允许它保持开放。

关于android - 使用点击上下文菜单选项打开上下文菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23720243/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com