好的,所以现在看完之后我确实有一个长按菜单就像我想要的那样...唯一的问题是它实际上并没有得到声音文件并保存它
我想知道我现在做错了什么?这是我使用的代码:
Button SoundButton1 = (Button) findViewById(R.id.money);
registerForContextMenu(SoundButton1);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
menu.setHeaderTitle("Save as...");
menu.add(0, MENU_RINGTONE, 0, "Ringtone");
menu.add(0, MENU_NOTIFICATION, 0, "Notification");
}
@Override
public boolean onContextItemSelected(MenuItem item) {
if(item.getTitle()=="Ringtone"){function1(item.getItemId());}
else if(item.getTitle()=="Notification"){function2(item.getItemId());}
else {return false;}
return true;
}
public void function1(int id){
Toast.makeText(this, "Ringtone saved", Toast.LENGTH_SHORT).show();
}
public void function2(int id){
Toast.makeText(this, "Notification saved", Toast.LENGTH_SHORT).show();
}
答案 0 :(得分:0)
您没有正确比较Strings
。这个测试:
if(item.getTitle()=="Ringtone")
检查getTitle()
返回的对象是否与"Ringtone"
相同。这将永远是false
。与else if
测试类似。您实际上想要将getTitle
的值与您的String
进行比较。您应该使用String#equals()
方法替换它们。这是代码:
if(item.getTitle().equals("Ringtone")){function1(item.getItemId());}
else if(item.getTitle().equals("Notification")){function2(item.getItemId());}
else {return false;}
答案 1 :(得分:0)
如果您正在使用ListFragment,那么您还需要执行
getListView().setOnCreateContextMenuListener(this);
而不是
registerForContextMenu(listView);
似乎。