4

我的应用程序中有一个自定义对话框。我的自定义对话框实现为具有透明背景和类似对话框的视图的 Activity。Mu 自定义对话框看起来像警报对话框,带有标题、消息和按钮。我正在尝试做的是创建漂亮的界面来设置我的弹出窗口的标题、消息和 onClickListener。

首先,我不想让所有员工都像这样:

 Intent intent = new Intent (this, CustomPopup.class);
 intent.putExta ("Title", "PopupTitle");
 intent.putExta ("Message", "PopupMessage");
 intent.putExtra ("OnCLickListener", ?????); //here is problem

 startActivity(intent);

但问题是没有办法将 OnCLickListener 设置为意图。

其次,我尝试创建实现 Parcable 的类。但问题是一样的

@Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeString(title);
        dest.writeString(message);
        dest.writeValue(buttonClickListener); // here is problem. I cannot write Interface
    }

我无法将 OnCLickListener 写入 Parcel 对象。

怎样成为 ?如何为我的自定义弹出窗口编写漂亮的界面?因为弹出窗口可以有不同的标题和消息,并且弹出窗口将在许多活动中使用....提前致谢

4

4 回答 4

1

创建一个实现 OnClickListener 和 Serializable 的类。通过 Intent 将实例发送到“对话框”。

于 2012-10-18T22:05:16.393 回答
0

如果弹出窗口的行为如此不同,请创建包含这些行为的 CustomPopup 子类。您仍然可以传入这些侦听器需要采取行动的数据。

于 2012-10-18T21:55:01.520 回答
0

谢谢@toadzky。只需将不可序列化的对象作为参数传递给方法,例如:

public interface OnActionInterface {
    void onPositiveButtonClicked(Activity activity);
    void onNegativeButtonClicked(Activity activity);
}

在https://stackoverflow.com/a/37071472/2914140查看我的完整答案。

于 2016-05-06T11:44:04.177 回答
-1

只需a扩展Serializable到这样的接口:

public interface PlayerLambda extends Serializable {
    public void updateWatchedProgress(int progress);
}
于 2019-10-18T22:36:58.567 回答