如何在创建Intent时将接口传递给构造函数

时间:2013-04-06 16:04:58

标签: android android-intent

我有两个活动: MainActivity 启动 NewReminderActivity 。创建新提醒时将通知第一个。因此,它实现了接口 OnEventAddedListener

我是否需要使用序列化将 MainActivity 添加到intent中,还是有更好的解决方案?我从未见过使用序列化来完成此任务的任何示例,我确信将接口从一个活动传递到另一个活动以进行通信是非常常见的。

public class MainActivity extends Activity implements OnEventAddedListener {

    @Override
    public boolean onOptionsItemSelected(MenuItem item)
    {
        if(item.getItemId() == R.id.action_addReminder)
        {
             // NewReminderActivity c = new NewReminderActivity(this);
             // Intent intent = new Intent(this, c.getClass()); // this won't work

             Intent intent = new Intent(this, NewReminderActivity.class);
             startActivity(intent);
             return true;
        } else {
             return super.onOptionsItemSelected(item);
       }
   }
}

1 个答案:

答案 0 :(得分:1)

你绝对不应该尝试将一个活动传递给另一个活动,无论是通过序列化活动(由于多种原因甚至都不起作用)或设置参考。

Android将负责清理旧活动的内存,但只要您持有来自它的引用,它就无法执行此操作。 永远不要紧紧抓住其背景之外的其他活动或片段!

您应该使用startActivityForResult()关注starting activities and getting results上的文档,并通过onActivityResult(int, int, Intent)提供该活动的结果。