2011-08-11 105 views
0

当单击ImageButton时尝试发出声音时,我的应用程序崩溃,并且我一直盯着我的代码很长一段时间,但没有找到答案。我希望你们能帮我看看我做错了什么。尝试播放声音时ImageButton崩溃

我试图手动使用失败的imageButton来创建onClick事件,然后通过Eclipse的拖放系统尝试通过我通过main.xml中名为test123的方法使按钮可点击。

我会发布我的代码,并希望你们可以找到一种溶剂。

由于提前,

package com.example.Jeffrey; 

import android.app.Activity; 
import android.media.MediaPlayer; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 

public class Jeffrey extends Activity { 
MediaPlayer mp; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    mp = MediaPlayer.create(this, R.raw.noise); 

    // View rakker = findViewById(R.id.imageView1); 
    //rakker.setOnClickListener(this); 

} 

public void test123() 
{   
    mp.start(); 

} 

}

与代码去的XML:

<ImageButton 
android:src="@drawable/rakker" 
android:layout_height="250px" 
android:layout_width="wrap_content" android:id="@+id/imageView1" 
android:onClick="test123"></ImageButton> 
+0

有没有机会看到调试日志?请:0) – Matt

+0

不知道这些代表我的错误的日志文件(新的Eclipse) roid.ide.eclipse.adt 2 0 2011-08-11 18:29:32.705 !MESSAGE AndroidManifest:忽略未知'图像'XML元素 !ENTRY com.android.ide.eclipse.adt 2 0 2011-08-11 18:29:32.977 !MESSAGE AndroidManifest:忽略未知'ImageBu'XML元素 !ENTRY com.android.ide。 eclipse.adt 2 0 2011-08-11 18:29:33.241 !MESSAGE AndroidManifest:忽略未知'ImageButt'XML元素 !ENTRY org.eclipse.ui 4 4 2011-08-11 18:50:13.170 ! MESSAGE引用的部分尚不存在:org.eclipse.ui.views.ProblemView。 –

+0

对于失去注释和空格的评论感到抱歉。不知道为什么发生:| –

回答

1

这可能是值得检查考虑一个null值返回,如果任何因为它无法创建MediaPlayer对象。另外,它应该在完成时发布(也用空检查)。

编辑:

,而我先前的回答可能是值得考虑的,这是绝对必要的,你有你的onClick方法需要查看参数。

//at the top of the file 

import android.view.View; 

public void test123(View v){ 
    //v is the view that has been clicked (the ImageButton from your .xml file) 
    //do stuff 
} 
+0

同意的观点,但在这种情况下,我没有使用onClick事件来处理我的ImageButton,而是由xml命令调用的自定义方法:android:onClick =“test123”。 。 。 。我试过给一个视图作为参数,但Eclipse给我一个调试错误 (“视图无法解析到一个类型”) –

+0

你确定要导入android.view.View吗? (尽管我认为应该已经自动提示) – Matt

+0

没有,将它添加到Eclipse,但Eclipse警告我没有被使用。仍然测试它没有结果,虽然 –

1

根据poset中的代码,我可以说这个问题与MediaPlayer的使用有关。 MediaPlayer有几种状态,空闲,初始化,准备,启动等。

在您的代码中,您通过传递资源ID来创建媒体播放器对象;使媒体播放器从闲置状态进入初始化状态。接下来你需要调用prepare()。但是你正在调用start()。可能是这导致了崩溃。

MediaPlayer的状态转换在Android开发人员网站中进行了整齐的说明。 (Link

词shash

1

制备具有mp.prepare在MediaPlayer();在调用mp.start()之前;