有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Android声音池onTouch不工作

我有一个奇怪的问题,当用户触摸屏幕时播放声音效果。我真的不知道该怎么办。我有一个名为sing的类和一个名为sound()的方法来播放声音效果。在onCreate()方法中,代码工作正常,但在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;
}

第一声歌唱。onCreate()中的sound()工作正常,但onTouch()中的后续调用似乎没有任何作用。这个测试类扩展了活动并实现了onTouch,我已经导入了onTouch,除此之外,我真的不知道会出现什么错误。我会发布唱歌课,但里面有很多代码。 任何人能给予的任何帮助都将不胜感激。今天我已经尴尬地挣扎了很长时间,我还不太擅长安卓系统。提前谢谢

--编辑 以下是整个活动:

package com.test.ch4;

import 安卓.app.Activity;
import 安卓.os.Bundle;
import 安卓.widget.TextView;
import 安卓.view.View;
import 安卓.view.MotionEvent;
import 安卓.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;
    }
}

共 (1) 个答案

  1. # 1 楼答案

    之后

    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;
        }