2016-05-17 36 views
0

所以我试图在按下一个项目或一行ListView时播放声音。我正在使用此代码:在ListView中点击物品时播放声音

listaMjeseci.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
       if (position == 0){ 
        MediaPlayer sijecanj = MediaPlayer.create(Mjeseci.this, R.raw.section1_mjeseci_sijecanj); 
        sijecanj.start(); 
       } 
      } 
     }); 

并获得空指针异常。 Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.Window$Callback android.view.Window.getCallback()' on a null object reference

我在做什么错?

+0

您是否使用findViewById(int)分配了ListView? – PsyGik

回答

0
listView.setOnItemClickListener(new OnItemClickListener() { 
       @Override 
       public void onItemClick(AdapterView<?> parent, View view, 
         int position, long id) { 
         if (position == 0) 
         { 
        MediaPlayer sijecanj = MediaPlayer.create(Mjeseci.this, R.raw.section1_mjeseci_sijecanj); 
        sijecanj.start(); 
       } 
       } 
      }); 
+0

有什么区别?我在这里看到的唯一区别是你没有'AdapterView.'。如果你能详细说明你的答案,这将有助于海报。 –

+0

是的,就像一个魅力。不同之处在于Override在他的答案中不存在。当我删除它时,声音就像它被叠加起来一样播放。你能解释一下为什么Override导致这个错误? – DaxHR

+0

@DaxHR'@ Override'没有导致错误。错误是因为'新的AdapterView.OnItemClickListener()'。使用'new OnItemClickListener()',你想要一个项目点击监听器而不是一个适配器点击监听器。当你使用'AdapterView.OnItemClickListener()'时,没有适配器与这个监听器关联,这就是为什么你得到空指针的原因。希望你能理解。 –