我需要帮助在android上制作一个longpress上下文菜单

时间:2011-02-01 18:47:57

标签: android contextmenu

好的,所以现在看完之后我确实有一个长按菜单就像我想要的那样...唯一的问题是它实际上并没有得到声音文件并保存它

我想知道我现在做错了什么?这是我使用的代码:

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();  
        }

2 个答案:

答案 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);

似乎。