我有一个实现接口(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();