現在のビューの場合、Androidアクティビティはどのようにしてインスタンスにアクセスできますか?

ローランド・ル・フラン

SetContentViewを使用して設定した後、アクティビティはどのようにしてビューのインスタンスにアクセスできますか?アクティビティがロジックを含むカスタムビューを使用し、アクティビティがビューに設定する必要があるカスタムイベントリスナーを介してイベントをアクティビティに送信するには、このビューが必要なため、これが必要です。

kotlinのandroidstudioでプログラミングしています。以前はアクティビティにすべてのUIコントロールロジックが含まれていたので問題ありませんでしたが、カスタムビューでいくつかのUIコードを因数分解して、いくつかのアクティビティで再利用しています。

これがアクティビティの初期化です

class MyActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.custom_view)

        // Here need to access the view instance
        *xxxxxxx*.setCustomViewListener(new CustomView.MyCustomViewListener() {
            @Override
            public void onCancelled() {
                // Code to handle cancellation from the view controls
            }
        });)
    }
}

これがビューのレイアウトです

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <Button android:id="@+id/button_do"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="Do" />

    <com.kotlin.app.views.CustomView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/view_custom" />
</FrameLayout>

これがカスタムビュークラスCustomView.ktです

class CustomView : FrameLayout, View.OnClickListener {

    constructor(context: Context) : super(context)

    init {
    }

    interface CustomViewListener {
        fun onCancelled()
    }
    private var listener: CustomViewListener? = null

    fun setCustomViewListener(listener: CustomerViewListener) {
        this.listener = listener
    }

何かアイデアはありますか?

AjahnCharles

Kotlinでは、Kotlin合成を使用するのがより一般的です。

view_custom.setCustomViewListener(...)

注:リスナーの実装は、KotlinではなくJavaで記述したようです。インターフェイスはKotlinで定義されているため、次のようなものが必要です。

view_custom.setCustomViewListener(object : CustomView.MyCustomViewListener {
    override fun onCancelled() {
        ...
    }
})

KotlinのSAMインターフェイス

個人的にはラムダを使用するのが好きです。残念ながら、ラムダをKotlinSAMインターフェースとして使用することはできません。ただし、インターフェイスの代わりにtypealiasを使用することもできます。

typealias MyCustomerViewListener = () -> Void

次に、代わりにこれを使用できます。

view_custom.setCustomViewListener {
    // listener code
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Androidの別のアクティビティから1つのアクティビティのコンポーネント(タイムピッカーなど)にアクセスするにはどうすればよいですか?

分類Dev

Android AIDL:サービスが別のプロセスにあるときにサービスインスタンスをアクティビティで取得するにはどうすればよいですか?

分類Dev

マニフェストは、特定のアクティビティをAndroidのメインアクティビティまたは最初のアクティビティとしてどのように認識しますか?

分類Dev

既存のアクティビティのナビゲーションメニューにアクセスするにはどうすればよいですか

分類Dev

ボックスにインタラクティブビューアをどのように含めますか?

分類Dev

cordovaプラグインのサービス内からアクティビティにアクセスするにはどうすればよいですか?

分類Dev

Firebaseデータは、ログインアクティビティでのみデータベースから取得します。他のアクティビティで現在のユーザーにアクセスしようとすると、nullが発生します。

分類Dev

JavaScriptでは、スーパークラスのインスタンスのプロパティにどのようにアクセスできますか?

分類Dev

他のクラスからメインアクティビティのインタースティシャル広告にアクセスできますか?

分類Dev

Androidアプリのサービスを実行して、ユーザーが同じアクティビティに戻ってログインをバイパスできるようにするにはどうすればよいですか

分類Dev

(インターネット接続なし)broadCastReceiverをすべてのアクティビティにアクセスできるようにする方法

分類Dev

2番目のアクティビティのボタンをクリックしながらスピナーを使用して、メインアクティビティの背景色を変更するにはどうすればよいですか?

分類Dev

JavaFXの - どのように私は、コンピュータ・システム・クロックから正確な現在時刻(JavaFXのメディアを使用して)24時間のビデオを開始することができますか?

分類Dev

2つの異なるテキストインテントを1つのアクティビティから別のアクティビティに同じテキストビューに送信するにはどうすればよいですか?

分類Dev

インテントを使用して、またはAndroidの静的メソッドを使用して、あるアクティビティから別のアクティビティにデータにアクセスしますか?

分類Dev

ベースアクティビティ内のフラグメントのリソースまたはビューにアクセスできますか

分類Dev

Android :(サービスから)現在のフォアグラウンドアクティビティを取得するにはどうすればよいですか?

分類Dev

拡張可能なリストビューの子で別のアクティビティを作成するには、データベースから取得した最近および今後のイベントをどのように表示しますか?

分類Dev

Android-1つのアクティビティが別のアクティビティの変数にどのようにアクセスしますか?

分類Dev

エンティティにインデックス付けされていないデータが以前にある場合、インデックス作成はGoogleアプリデータストアでどのように機能しますか?

分類Dev

インスタンス状態の保存を使用してアクティビティ状態を保存するにはどうすればよいですか?

分類Dev

Android:フラグメントonCreateView()からアクティビティのビューに(findViewByIdを使用して)アクセスするにはどうすればよいですか?

分類Dev

ナビゲーションコンポーネントを使用してアクティビティから別のアクティビティに移動し、スタックから最初のアクティビティを削除するにはどうすればよいですか?

分類Dev

カスタムビューはどのようにしてアクティビティからデータを取得しますか?

分類Dev

ログイン成功後に別のアクティビティ(プロファイルアクティビティ)でユーザーのデータベースをロードするにはどうすればよいですか?プロフィールページを作成しようとしています

分類Dev

非アクティビティクラスのインタースティシャル広告を表示するにはどうすればよいですか?

分類Dev

Android内で、アクティビティを開始したり、すでにスタックにある場合はそのアクティビティを前面に表示するにはどうすればよいですか?

分類Dev

他のアクティビティにアクセスした後に戻ってきたときにアクティビティが再ロードされないようにするにはどうすればよいですか?

分類Dev

アンドロイドスタジオのタブ付きアクティビティテンプレートから円形のピンクのメールボックスアイコンを削除するにはどうすればよいですか?

Related 関連記事

  1. 1

    Androidの別のアクティビティから1つのアクティビティのコンポーネント(タイムピッカーなど)にアクセスするにはどうすればよいですか?

  2. 2

    Android AIDL:サービスが別のプロセスにあるときにサービスインスタンスをアクティビティで取得するにはどうすればよいですか?

  3. 3

    マニフェストは、特定のアクティビティをAndroidのメインアクティビティまたは最初のアクティビティとしてどのように認識しますか?

  4. 4

    既存のアクティビティのナビゲーションメニューにアクセスするにはどうすればよいですか

  5. 5

    ボックスにインタラクティブビューアをどのように含めますか?

  6. 6

    cordovaプラグインのサービス内からアクティビティにアクセスするにはどうすればよいですか?

  7. 7

    Firebaseデータは、ログインアクティビティでのみデータベースから取得します。他のアクティビティで現在のユーザーにアクセスしようとすると、nullが発生します。

  8. 8

    JavaScriptでは、スーパークラスのインスタンスのプロパティにどのようにアクセスできますか?

  9. 9

    他のクラスからメインアクティビティのインタースティシャル広告にアクセスできますか?

  10. 10

    Androidアプリのサービスを実行して、ユーザーが同じアクティビティに戻ってログインをバイパスできるようにするにはどうすればよいですか

  11. 11

    (インターネット接続なし)broadCastReceiverをすべてのアクティビティにアクセスできるようにする方法

  12. 12

    2番目のアクティビティのボタンをクリックしながらスピナーを使用して、メインアクティビティの背景色を変更するにはどうすればよいですか?

  13. 13

    JavaFXの - どのように私は、コンピュータ・システム・クロックから正確な現在時刻(JavaFXのメディアを使用して)24時間のビデオを開始することができますか?

  14. 14

    2つの異なるテキストインテントを1つのアクティビティから別のアクティビティに同じテキストビューに送信するにはどうすればよいですか?

  15. 15

    インテントを使用して、またはAndroidの静的メソッドを使用して、あるアクティビティから別のアクティビティにデータにアクセスしますか?

  16. 16

    ベースアクティビティ内のフラグメントのリソースまたはビューにアクセスできますか

  17. 17

    Android :(サービスから)現在のフォアグラウンドアクティビティを取得するにはどうすればよいですか?

  18. 18

    拡張可能なリストビューの子で別のアクティビティを作成するには、データベースから取得した最近および今後のイベントをどのように表示しますか?

  19. 19

    Android-1つのアクティビティが別のアクティビティの変数にどのようにアクセスしますか?

  20. 20

    エンティティにインデックス付けされていないデータが以前にある場合、インデックス作成はGoogleアプリデータストアでどのように機能しますか?

  21. 21

    インスタンス状態の保存を使用してアクティビティ状態を保存するにはどうすればよいですか?

  22. 22

    Android:フラグメントonCreateView()からアクティビティのビューに(findViewByIdを使用して)アクセスするにはどうすればよいですか?

  23. 23

    ナビゲーションコンポーネントを使用してアクティビティから別のアクティビティに移動し、スタックから最初のアクティビティを削除するにはどうすればよいですか?

  24. 24

    カスタムビューはどのようにしてアクティビティからデータを取得しますか?

  25. 25

    ログイン成功後に別のアクティビティ(プロファイルアクティビティ)でユーザーのデータベースをロードするにはどうすればよいですか?プロフィールページを作成しようとしています

  26. 26

    非アクティビティクラスのインタースティシャル広告を表示するにはどうすればよいですか?

  27. 27

    Android内で、アクティビティを開始したり、すでにスタックにある場合はそのアクティビティを前面に表示するにはどうすればよいですか?

  28. 28

    他のアクティビティにアクセスした後に戻ってきたときにアクティビティが再ロードされないようにするにはどうすればよいですか?

  29. 29

    アンドロイドスタジオのタブ付きアクティビティテンプレートから円形のピンクのメールボックスアイコンを削除するにはどうすればよいですか?

ホットタグ

アーカイブ