2014-01-25 88 views
0

我在我的項目中的原始文件夾中有一個名爲「s1」的音頻文件,並且當我運行我的模擬器並按下運行時,將以下代碼放到主屏幕上的按鈕上,它使程序崩潰。如果任何人都可以提供任何幫助或解決方案,我將永遠感激Android - 在外部存儲器上保存數據

public void fileSetup() { 

    File path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC); 
    String name1 = "Zen1"; 
    File file1 = new File(path, name1 + ".mp3"); 
    path.mkdirs(); 
    InputStream is1 = getResources().openRawResource(R.raw.s1); 
    try { 
     OutputStream os1 = new FileOutputStream(file1); 
     byte[] data1 = new byte [is1.available()]; 
     is1.read(data1); 
     os1.write(data1); 
     is1.close(); 
     os1.close(); 
    } catch (FileNotFoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    }  
} 

logcat的輸出:

01-24 23:00:42.137: E/AndroidRuntime(1064): FATAL EXCEPTION: main 
01-24 23:00:42.137: E/AndroidRuntime(1064): java.lang.IllegalStateException: Could not find a method saveData(View) in the activity class com.malthorn.zenstatemeditation.MainActivity for onClick handler on view class android.widget.Button with id 'button1' 
01-24 23:00:42.137: E/AndroidRuntime(1064):  at android.view.View$1.onClick(View.java:3620) 
01-24 23:00:42.137: E/AndroidRuntime(1064):  at android.view.View.performClick(View.java:4240) 
01-24 23:00:42.137: E/AndroidRuntime(1064):  at android.view.View$PerformClick.run(View.java:17721) 
01-24 23:00:42.137: E/AndroidRuntime(1064):  at android.os.Handler.handleCallback(Handler.java:730) 
01-24 23:00:42.137: E/AndroidRuntime(1064):  at android.os.Handler.dispatchMessage(Handler.java:92) 
01-24 23:00:42.137: E/AndroidRuntime(1064):  at android.os.Looper.loop(Looper.java:137) 
01-24 23:00:42.137: E/AndroidRuntime(1064):  at android.app.ActivityThread.main(ActivityThread.java:5103) 
01-24 23:00:42.137: E/AndroidRuntime(1064):  at java.lang.reflect.Method.invokeNative(Native Method) 
01-24 23:00:42.137: E/AndroidRuntime(1064):  at java.lang.reflect.Method.invoke(Method.java:525) 
01-24 23:00:42.137: E/AndroidRuntime(1064):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 
01-24 23:00:42.137: E/AndroidRuntime(1064):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
01-24 23:00:42.137: E/AndroidRuntime(1064):  at dalvik.system.NativeStart.main(Native Method) 
01-24 23:00:42.137: E/AndroidRuntime(1064): Caused by: java.lang.NoSuchMethodException: saveData [class android.view.View] 
01-24 23:00:42.137: E/AndroidRuntime(1064):  at java.lang.Class.getConstructorOrMethod(Class.java:423) 
01-24 23:00:42.137: E/AndroidRuntime(1064):  at java.lang.Class.getMethod(Class.java:787) 
01-24 23:00:42.137: E/AndroidRuntime(1064):  at android.view.View$1.onClick(View.java:3613) 
01-24 23:00:42.137: E/AndroidRuntime(1064):  ... 11 more 
+0

你將不得不提供超過「它崩潰的程序」,以獲得任何真正的幫助。您必須提供logcat輸出,以便我們可以確切地看到發生了什麼。 – ArmaAK

+0

發佈您的XML文件 – Apoorv

回答

1

我們不能做任何事情,如果你不提供異常的logcat的!

一個完全盲目的猜測會是你失去了權限。根據我所看到的代碼

好像你MainActivity的

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

編輯

解決方案正在從一個點擊監聽,通過XML設置調用,一個動作保存數據。

我注意到,在第44行中有一個名爲savaData的方法,沒有參數。從XML所謂的點擊監聽器需要一個視圖,所以解決方法是在你的引擎收錄44行改成這樣:

public void saveData(View view) { 

請務必注意一個更改爲Ë上的字保存!

+0

添加了logcat,對不起 – user3224105

+0

確定日誌貓seema指示您在某處調用保存數據,但我期望在編譯時顯示。這個問題似乎與您的保存代碼不同,你可以發佈包含這個 –

+0

的整個班級(活動),你去http://pastebin.com/1dxRgDnW – user3224105