2011-02-01 2 views
2

Итак, теперь, после прочтения, у меня действительно есть меню на длительной печати, как хотелось ... единственная проблема в том, что на самом деле он не получает звуковой файл и не сохраняет этоМне нужна помощь в создании longpress Контекстное меню на android

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

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

Вы не сравниваете 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;} 
+0

ok, ty, но его все равно он не сохранит рингтон, когда я подражаю его на моем телефоне, хотя я добавил return false; и private static final int MENU_NOTIFICATION = 0; \t закрытый статический окончательный int MENU_RINGTONE = 0; – vamp6x6x6x

0

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

getListView().setOnCreateContextMenuListener(this); 

вместо

registerForContextMenu(listView); 

кажется.

Смежные вопросы