簡體   English   中英

在意圖中的活動之間傳遞接口

[英]Pass an interface between activities in intent

我有這種情況:一個 Class A(實現接口 I),一個 Modal 和一個 Class B(實現接口 I)。

The Class A open the modal, and from the modal I go to class B. In class BI want to return to the Class A with the Modal updated (Not implemented yet).

我試圖在兩個活動之間傳遞一個接口,但我收到了這個錯誤(我已經在接口中擴展了 Serializable):

 Caused by: java.io.NotSerializableException: com.google.android.material.textview.MaterialTextView

Class A

@Override
public void showList() {
            Intent intent = new Intent(this, SelectMethod.class);
            intent.putExtra("iHome", this);
            startActivity(intent);
    }

模態

 # Function when click button and go to the class B
 btn_select_method.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            iHome.showList();
        }
    });

Class B(選擇方法)

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
     intent.getSerializableExtra("iHome");
}

界面

public interface Ihome extends Serializable {
    void showList();
}

對於 class 可序列化,所有這些字段都需要可序列化(可以寫入/讀取保持狀態),任何擴展 View 的 class 具有不可序列化的字段,如上下文和偵聽器,這些是實例。

您不應嘗試通過意圖傳遞活動/視圖/片段實例,因為它會破壞 android 生命周期行為。

由於您使用帶有模態主題的活動,您可以使用

startActivityForResult(intent, 25 /*any number */)

然后進入 SelectMethod 而不是從您setResult的 FirstActivity 調用方法然后finish

結果從 FirstActivity 讀入:

@Override public void onActivityResult

查看更多: https://developer.android.com/training/basics/intents/result#kotlin

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM