从Child Activity调用Parent Activity方法

时间:2017-11-16 23:53:51

标签: android android-activity

我有活动A开始活动B.让我首先说我相信活动A不能使用" startActivityForResult()"因为活动B可以替换另一个活动B(这意味着,开始另一个活动并完成自己),如果发生这种情况,活动A将不再期待结果,并且第二个活动B无法通过活动结果。

活动A具有模型的实例。无论如何我可以从活动B访问模型吗?

3 个答案:

答案 0 :(得分:1)

我通过添加到我的MainActivity中解决了这个问题:

private static MainActivity main;

public static MainActivity getMain() {
    return main;
}

我知道这不是一个好习惯。

答案 1 :(得分:1)

你应该使用一层持久性,例如:

  • 内部数据库
  • 共享偏好设置
  • 云服务
  • 文件系统

...存储模型类型的状态。这样,状态在配置更改中持久,导致Android重新创建Activity个实例。

答案 2 :(得分:1)

在ActivityA中你必须实现Serializable并使用Intent。 试试吧。

 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // Go to Activity B
    Intent gotoActivityB = new Intent(this, ActivityB.class);
    gotoActivityB.putExtra("ACTIVITY_A", this);
    startActivity(gotoActivityB);
}

在活动B中你可以从Intent获得活动A

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_b);

    // get Activity A
    if (getIntent() != null){
        AcitivityA acitivityA = (AcitivityA) getIntent().getSerializableExtra("ACTIVITY_A");
    }
}

抱歉我的英语不好:(