【发布时间】:2017-06-04 11:57:49
【问题描述】:
我是 Android 编程的新手,所以我希望这个问题对你们来说很容易。
我正在打开一个自定义AlertDialog,带有一个额外的按钮和一个seekbar,以显示播放歌曲的进度。我的问题是我无法访问该按钮的onClick 方法。
我正在使用以下代码打开 AlertDialog:
public void openAudioPlayer(View view){
new AlertDialog.Builder(this)
.setTitle(R.string.audio_player_title)
.setMessage(R.string.audio_player_description)
.setView(R.layout.dialog_audio_player)
.setPositiveButton(R.string.confirm,null)
.setNegativeButton(R.string.cancel, null).show();
}
dialog_audio_player 是自定义 XLM 文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/playerBox"
android:layout_centerVertical="true">
<ToggleButton
android:id="@+id/playStateButton"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_centerVertical="true"
android:background="@drawable/toggle_player"
android:onClick="onPlayerClicked"
android:checked="false"
android:focusable="false"
android:focusableInTouchMode="false"
android:textOff=""
android:textOn="" />
<SeekBar
android:id="@+id/seekBar"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_toRightOf="@id/playStateButton" />
</RelativeLayout>
</LinearLayout>
所以,我想用我自定义的onPlayerCLicked 方法控制该按钮的按下,该方法包含在与openAudioPlayer 相同的活动中:
public void onPlayerClicked(View view){
Toast.makeText(this,"clicked",Toast.LENGTH_LONG).show();
}
但是程序从不进入那里。事实上,应用程序关闭。
我该怎么做?
崩溃如下:
06-04 12:47:13.587 3928-3928/vmc.songbook E/AndroidRuntime: FATAL EXCEPTION: main
Process: vmc.songbook, PID: 3928
java.lang.IllegalStateException: Could not execute method for android:onClick
at android.view.View$DeclaredOnClickListener.onClick(View.java:4698)
at android.view.View.performClick(View.java:5610)
at android.widget.CompoundButton.performClick(CompoundButton.java:122)
at android.view.View$PerformClick.run(View.java:22265)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6077)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invoke(Native Method)
at android.view.View$DeclaredOnClickListener.onClick(View.java:4693)
at android.view.View.performClick(View.java:5610)
at android.widget.CompoundButton.performClick(CompoundButton.java:122)
at android.view.View$PerformClick.run(View.java:22265)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6077)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
Caused by: java.lang.RuntimeException: stop failed.
at android.media.MediaRecorder.stop(Native Method)
at vmc.songbook.RecordAudio.stopRecording(RecordAudio.java:121)
at vmc.songbook.RecordAudio.onToggleClicked(RecordAudio.java:84)
at java.lang.reflect.Method.invoke(Native Method)
at android.view.View$DeclaredOnClickListener.onClick(View.java:4693)
at android.view.View.performClick(View.java:5610)
at android.widget.CompoundButton.performClick(CompoundButton.java:122)
at android.view.View$PerformClick.run(View.java:22265)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6077)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
【问题讨论】:
标签: android button onclick dialog android-alertdialog