我有一个实现接口(interface) (InterfaceA) 的 Activity (ActivityA)。
当我想显示其他 Activity 时,我使用以下代码:

Intent intent = new Intent(this, ActivityB.class);
// intent.putExtra("interface", this);
startActivity(intent);

和 Activity A
public class ActivityA extends Activity implements InterfaceA, Serializable

然后在 ActivityB
Intent intent = getIntent();
Serializable s = intent.getExtras().getSerializable("interface");
if(s != null && s instanceof InterfaceA)
   iInterface = (InterfaceA)s;

但是我在执行过程中遇到错误
android java.io.NotSerializableException

是否可以通过 Intent 发送 Activity(例如 Objective-C 中的委托(delegate)?

谢谢

最佳答案



您可以在 ActivityB 中启动 ActivityA 以获得结果,因为这不会重新创建 ActivityA 。当您从 ActivityB 收到结果时,在列表中添加新对象并调用适配器的 notifyDataSetChanged()

在 ActivityA 中,

public static final int REQ_CODE = 1;

// Starting an activity
Intent intent = new Intent(this, ActivityB.class);
startActivityForResult(intent, REQ_CODE );

并覆盖此方法以获取结果
@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data)
    {
        super.onActivityResult(requestCode, resultCode, data);
        if(requestCode == REQ_CODE)
        {
            if(resultCode == Activity.RESULT_OK)
            {
                // Add the object in list and call adapter's notifyDataSetChanged()
            }
        }
    }

ActivityB 中,
Intent data = new Intent();
// Put the new object as Serializable in Intent
setResult(Activity.RESULT_OK, data);
// And finally, close the activity
finish();

10-07 22:48