2011-02-01 11 views
2

これで読んだ後、私は実際に長いプレスで私が望むようなメニューを持っています...唯一の問題は実際にサウンドファイルを取得せず保存することですそれは私はロングプレスを作成するのに助けが必要です

私は今何が間違っているのだろうか?ここに私が使用したコードはあります:

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()によって返さオブジェクトが​​と同じオブジェクトである場合。これは常にfalseになります。同様にelse ifテストと同様です。実際にgetTitleStringを比較したいとします。それらをString#equals()メソッドで置き換える必要があります。ここでは、コードは次のようになります。

if(item.getTitle().equals("Ringtone")){function1(item.getItemId());} 
else if(item.getTitle().equals("Notification")){function2(item.getItemId());} 
else {return false;} 
+0

私は電話のイベントでエミュレートすると、それでもそれは着メロを保存しませんでした。プライベートstatic final int MENU_NOTIFICATION = 0; \tプライベートstatic final int MENU_RINGTONE = 0; – vamp6x6x6x

0

あなたがListFragmentを使用している場合、あなたはまた、それはそう

getListView().setOnCreateContextMenuListener(this); 

代わりの

registerForContextMenu(listView); 

を行う必要があります。

関連する問題