我有这样的情况:一个类a(实现接口i)、一个模态和一个类b(实现接口i)。
a类打开模态,然后从模态转到b类。在类b中,我想返回到类a,更新了模态(尚未实现)。
我试图在两个活动之间传递接口,但收到此错误(我已在接口中扩展了serializable):
Caused by: java.io.NotSerializableException: com.google.android.material.textview.MaterialTextView
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();
}
});
b类(选择方法)
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
intent.getSerializableExtra("iHome");
}
接口
public interface Ihome extends Serializable {
void showList();
}
1条答案
按热度按时间9q78igpj1#
要使类可序列化,所有这些字段都需要可序列化(可以写/读保持状态),任何扩展视图的类都有不可序列化的字段,如上下文和侦听器,这些都是示例。
您不应该试图通过intent传递activity/views/fragments示例,因为它破坏了android的生命周期行为。
因为您使用的是模态主题的活动,所以可以使用
然后进入selectmethod,而不是从第一个活动调用方法
setResult
那么finish
结果从firstactivity读入:查看更多:https://developer.android.com/training/basics/intents/result#kotlin