2011-08-11 174 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()之前;