2013-10-22 47 views
0

我遇到一个奇怪的问题,当用户触摸屏幕时播放音效。我真的不确定该去哪里。我有一个名为sing的类和一个名为sound()的方法来播放声音效果。在onCreate()方法中,代码工作正常,但在onTouch()方法中,它没有。 这里是我使用的代码:Android soundpool onTouch无法正常工作

TextView textview; 
Sing sing; 

@Override 
public void onCreate(Bundle savedInstanceState){ 
    super.onCreate(savedInstanceState); 
    textview = new TextView(this); 
    textview.setText("Test"); 
    setContentView(textview); 
    sing = new Sing(); 
    sing.create(); 
    sing.sound("sound.ogg");//just to test, works fine 
} 

public boolean onTouch(View v, MotionEvent event){ 
    if (event.getAction() == MotionEvent.ACTION_UP){ 
     sing.sound("sound.ogg"); //doesnt work 
    } 
    return true; 
} 

第一次调用sing.sound()中的onCreate()工作正常,但在onTouch的后续调用()似乎并没有被做任何事情。这个测试类扩展了活动并实现了onTouch,我已经导入了onTouch,除此之外,我真的不知道错误是什么。我会发布唱歌班,但它有很多代码。 任何人都可以提供帮助将非常感激。今天我一直在为这个令人尴尬的长时间苦苦挣扎,我对android还不是很好。提前致谢。

--edit 这里是整个活动:

package com.test.ch4; 

import android.app.Activity; 
import android.os.Bundle; 
import android.widget.TextView; 
import android.view.View; 
import android.view.MotionEvent; 
import android.view.View.OnTouchListener; 

public class SoundPoolTest extends Activity implements OnTouchListener{ 
TextView textview; 
Sing sing; 

@Override 
public void onCreate(Bundle savedInstanceState){ 
    super.onCreate(savedInstanceState); 
    textview = new TextView(this); 
    textview.setTextSize(40); 
    textview.setText("Test"); 
    setContentView(textview); 
} 

public boolean onTouch(View v, MotionEvent event){ 
    if (event.getAction() == MotionEvent.ACTION_UP){ 
     sing = new Sing(); 
     sing.create(); 
     sing.sound("sound.ogg"); 
    } 
    return true; 
    } 
} 
+0

你确定onTouch()正在射击吗?把Log.d(“ontouch”,“fired”);在onTouch方法和检查,看看它是否出现在你的logcat – JRowan

+0

你可以把你的整个活动,我认为你实施你的onTouch()不正确 – JRowan

+0

我承担了其余的活动。感谢您花时间看看它。 – user2333867

回答

0

setContentView(textview); 

textview.setOnTouchListener(this); 

那么你onTouch前()方法把@Override这样

@Override 
public boolean onTouch(View v, MotionEvent event){ 
    if (event.getAction() == MotionEvent.ACTION_UP){ 
     sing = new Sing(); 
     sing.create(); 
     sing.sound("sound.ogg"); 
    } 
    return true; 
    } 
+0

啊!这样一个简单的错误。谢谢! – user2333867

+0

嘿没有问题记住我对Log.d()的评论()在那里它确实派上用场,而你的测试 – JRowan