4

アプリにカスタムダイアログがあります。私のカスタムダイアログは、透明な背景とダイアログのようなビューを備えたアクティビティとして実装しました。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の両方を実装するクラスを作成します。インテントを介してインスタンスを「ダイアログ」に送信します。

于 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 に答える