【发布时间】:2018-02-07 05:12:00
【问题描述】:
由于我在 android 中比较新鲜,所以请帮帮我。单击 Imagebutton 时,将显示带有单选按钮的警报对话框窗口。下面是我用来获取警报对话框的代码。
PhotosAdapter.java:
reportAbuseImageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FragmentManager manager = ((Activity) mCtx).getFragmentManager();
AlertDialogRadio alert = new AlertDialogRadio();
Bundle b = new Bundle();
b.putInt("position", position);
alert.setArguments(b);
alert.show(manager, "alert_dialog_radio");
}
});
AlertDialogRadio.java:
public class AlertDialogRadio extends DialogFragment {
AlertPositiveListener alertPositiveListener;
public interface AlertPositiveListener {
public void onPositiveClick(int position);
}
public void setListener(AlertPositiveListener alertPositiveListener){
this.alertPositiveListener=alertPositiveListener;
}
public void onAttach(android.app.Activity activity) {
super.onAttach(activity);
try{
alertPositiveListener = (AlertPositiveListener) activity;
}catch(ClassCastException e){
throw new ClassCastException(activity.toString() + " must implement AlertPositiveListener");
}
}
OnClickListener positiveListener = new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
AlertDialog alert = (AlertDialog)dialog;
int position = alert.getListView().getCheckedItemPosition();
alertPositiveListener.onPositiveClick(position);
}
};
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
Bundle bundle = getArguments();
int position = bundle.getInt("position");
AlertDialog.Builder b = new AlertDialog.Builder(getActivity());
b.setTitle("Choose your version");
b.setSingleChoiceItems(RadioButtonList.Android.code, position, null);
b.setPositiveButton("OK",positiveListener);
b.setNegativeButton("Cancel", null);
AlertDialog d = b.create();
return d;
}
}
Android.java:
public class Android {
static String[] code = new String[]{
"Not Intrested",
"Sexual Content",
"Violent or repulsive content",
"Spam or misleading",
"Infringes my rights",
"Wrong description",
"Description is not complete"
};
}
不幸的是,当单击 Imagebutton 时,应用程序崩溃了。
LogCatError:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.splash.indivillage.indishare, PID: 10084
java.lang.ClassCastException: com.splash.indivillage.indishare.Home.HomeActivity@e7e35e6 must implement AlertPositiveListener
at com.splash.indivillage.indishare.Utils.AlertDialogRadio.onAttach(AlertDialogRadio.java:37)
at android.app.Fragment.onAttach(Fragment.java:1454)
at android.app.DialogFragment.onAttach(DialogFragment.java:365)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:937)
at android.app.BackStackRecord.setLastIn(BackStackRecord.java:860)
at android.app.BackStackRecord.calculateFragments(BackStackRecord.java:883)
at android.app.BackStackRecord.run(BackStackRecord.java:728)
at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1580)
at android.app.FragmentManagerImpl$1.run(FragmentManager.java:483)
at android.os.Handler.handleCallback(Handler.java:754)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:163)
at android.app.ActivityThread.main(ActivityThread.java:6205)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794)
已编辑:enter image description here
请帮帮我。谢谢你。
【问题讨论】:
-
在崩溃即将到来的那一行之前阅读评论
-
alt+ent 点击并实现界面方法。