2014-01-25 66 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