Java 按按钮播放随机声音文件-Android
我是一个初学者,我正在尝试制作一个非常简单的应用程序,一个按钮和资产文件夹中的4.ogg文件,该按钮将播放上述文件中的随机文件 我只有一个主类和一个布局 下面是我所做的,代码没有显示任何错误,但在emulator上启动时应用程序会立即崩溃 我的主要班级:-Java 按按钮播放随机声音文件-Android,java,android,Java,Android,我是一个初学者,我正在尝试制作一个非常简单的应用程序,一个按钮和资产文件夹中的4.ogg文件,该按钮将播放上述文件中的随机文件 我只有一个主类和一个布局 下面是我所做的,代码没有显示任何错误,但在emulator上启动时应用程序会立即崩溃 我的主要班级:- MediaPlayer player; AssetFileDescriptor descriptor; private String[] filelist; @Override public void onCreate(Bundle
MediaPlayer player;
AssetFileDescriptor descriptor;
private String[] filelist;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list_item);
player = new MediaPlayer();
Button playSound = (Button)findViewById(R.id.button1);
AssetManager aMan = this.getAssets();
try
{
filelist = aMan.list("/assets");
} catch (IOException e1) {
e1.printStackTrace();
}
playSound.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
Random randomGenerator = new Random();
int randomInt = randomGenerator.nextInt(filelist.length);
try
{
String mediaFile = filelist[randomInt];
descriptor = getAssets().openFd(mediaFile);
player.setDataSource(descriptor.getFileDescriptor(),descriptor.getStartOffset(),descriptor.getLength());
descriptor.close();
player.prepare();
player.start();
}
catch (Exception e) {
e.printStackTrace();
}
}
});
}
我的布局:-
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:src="@drawable/background"
android:contentDescription="@string/desc" />
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_marginBottom="154dp"
android:layout_marginRight="92dp"
android:text="@string/button1" />
</RelativeLayout>
应用ρаσѕρєаK溶液后的第二个logcat:-
12-14 20:19:02.227: D/AndroidRuntime(537): Shutting down VM
12-14 20:19:02.237: W/dalvikvm(537): threadid=1: thread exiting with uncaught exception (group=0x409961f8)
12-14 20:19:02.247: E/AndroidRuntime(537): FATAL EXCEPTION: main
12-14 20:19:02.247: E/AndroidRuntime(537): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mbawardi.layan/com.mbawardi.layan.MainActivity}: java.lang.NullPointerException
12-14 20:19:02.247: E/AndroidRuntime(537): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1955)
12-14 20:19:02.247: E/AndroidRuntime(537): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980)
12-14 20:19:02.247: E/AndroidRuntime(537): at android.app.ActivityThread.access$600(ActivityThread.java:122)
12-14 20:19:02.247: E/AndroidRuntime(537): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146)
12-14 20:19:02.247: E/AndroidRuntime(537): at android.os.Handler.dispatchMessage(Handler.java:99)
12-14 20:19:02.247: E/AndroidRuntime(537): at android.os.Looper.loop(Looper.java:137)
12-14 20:19:02.247: E/AndroidRuntime(537): at android.app.ActivityThread.main(ActivityThread.java:4340)
12-14 20:19:02.247: E/AndroidRuntime(537): at java.lang.reflect.Method.invokeNative(Native Method)
12-14 20:19:02.247: E/AndroidRuntime(537): at java.lang.reflect.Method.invoke(Method.java:511)
12-14 20:19:02.247: E/AndroidRuntime(537): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
12-14 20:19:02.247: E/AndroidRuntime(537): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
12-14 20:19:02.247: E/AndroidRuntime(537): at dalvik.system.NativeStart.main(Native Method)
12-14 20:19:02.247: E/AndroidRuntime(537): Caused by: java.lang.NullPointerException
12-14 20:19:02.247: E/AndroidRuntime(537): at com.mbawardi.layan.MainActivity.onCreate(MainActivity.java:42)
12-14 20:19:02.247: E/AndroidRuntime(537): at android.app.Activity.performCreate(Activity.java:4465)
12-14 20:19:02.247: E/AndroidRuntime(537): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
12-14 20:19:02.247: E/AndroidRuntime(537): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1919)
12-14 20:19:02.247: E/AndroidRuntime(537): ... 11 more
删除
导入android.R代码>从导入和导入项目R文件。或使用
descriptor = MainActivity.this.getAssets().openFd(mediaFile);
而不是
descriptor = MainActivity.this.getAssets().openFd("audioogg/"+mediaFile);
在MainActivity.java中的MainActivity.java
classline 39中发布日志猫错误:-playSound.setOnClickListener(new View.OnClickListener()@user1905031在这种情况下,请检查findViewById()
是否真的找到了您的按钮(如果没有,它将返回null
)。另外,如果您正在导入正确的R
-class,请检查。谢谢,但不幸的是,仍然无法工作,请尝试(“”)和(“/”),logcat将添加到主目录中quistion@user1905031:确保对setContentView(R.layout.activity\u list\u项)使用了正确的布局这是我唯一的版面,它的内容发布在op。Thanks@user1905031:如果您在assets/audioogg
文件夹中添加更多文件,您的代码将在我这边工作。只需在assets文件夹中创建一个文件夹并使用filelist=aMan.list(“audioogg”)
是的!但我一打开应用程序,它就会崩溃!这是我最新的日志
descriptor = MainActivity.this.getAssets().openFd("audioogg/"+mediaFile);