【问题标题】:Android: put Interface to IntentAndroid:将接口放入意图
【发布时间】:2012-10-18 20:58:33
【问题描述】:

我的应用中有一个自定义对话框。我的自定义对话框实现为具有透明背景和类似对话框的视图的 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 对象。

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

【问题讨论】:

  • 那么,你为什么不使用实际的对话框?
  • 除了标题和消息之外还有更多的视图,但我不想让我的问题更复杂......
  • 为什么不额外添加一个关键的“clicklistener”值true?如果设置为 true,则在接收 Activity 类中设置 OnClickListener()
  • 因为按钮点击可以有不同的动作。它可以关闭弹出窗口,可以启动另一个活动
  • 为什么不直接使用对话框或对话框片段?

标签: android android-intent parcelable


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        【解决方案4】:

        只需扩展一个Serializable到这样的界面:

        public interface PlayerLambda extends Serializable {
            public void updateWatchedProgress(int progress);
        }
        

        【讨论】:

          猜你喜欢
          • 2014-02-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-06-15
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多