Мне нужна помощь в создании контекстного меню для Android - PullRequest
2 голосов
/ 01 февраля 2011

Хорошо, теперь после прочтения у меня действительно есть меню при длительном нажатии, как я и хотел ... единственная проблема в том, что он не получает звуковой файл и не сохраняет его

Мне интересно, что я сейчас не так сделал? Вот код, который я использовал:

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 голосов
/ 13 августа 2012

Если вы используете ListFragment, то вам также нужно сделать

getListView().setOnCreateContextMenuListener(this);

вместо

registerForContextMenu(listView);

.

0 голосов
/ 01 февраля 2011

Вы неправильно сравниваете 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;}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...