访问父活动的实例?

Aru*_*ham 37 android

假设我有一个类first.java(活动类),我在这个类中启动另一个活动(second.java - 活动类).如何从second.java访问first.java的实例?有人可以给我一个很好的解释..一个例子会很棒......

Eri*_*vik 41

如果您需要第二个活动将某些数据返回到第一个活动,我建议您使用startActivityForResult()来启动第二个活动.然后在第一个活动中的onResult()中,您可以完成所需的工作.

在First.java中,您启动Second.java:

Intent intent = new Intent(this, Second.class);
int requestCode = 1; // Or some number you choose
startActivityForResult(intent, requestCode);
Run Code Online (Sandbox Code Playgroud)

结果方法:

protected void onActivityResult (int requestCode, int resultCode, Intent data) {
  // Collect data from the intent and use it
  String value = data.getString("someValue");
}
Run Code Online (Sandbox Code Playgroud)

在Second.java中:

Intent intent = new Intent();
intent.putExtra("someValue", "data");
setResult(RESULT_OK, intent);
finish();
Run Code Online (Sandbox Code Playgroud)

如果您不希望在第一个活动中执行某些工作之前等待第二个活动结束,则可以发送第一个活动作出反应的广播.

  • 你是对的cant0na,但我认为你正确地得到了问题.他不希望第二个活动2返回一些结果,但他实际上想要从第一个活动2个第二个转移数据(上下文).... (3认同)

Pet*_*ler 9

您只需getParent()从子活动中拨打电话即可.

我不知道为什么其他答案如此复杂.

  • 因为这是一个不完整的答案.getParent()仅适用于作为子进程嵌入的活动,它将在其他活动上返回null. (15认同)
  • @acib708 如果你用 `startActivity` 启动 SecondActivity,那么它们之间就没有“父子”关系。您可以使用`startActivityForResult` 作为回调机制。或者分享一些可以观察到的单身人士。像那样的东西。 (3认同)

N-J*_*JOY -3

试试这个,如果这个工作 4 u.........
像这样的东西......

class first
{
public static first instance;
oncreate()
{
instance=this;
}

public static getInstance()
{
return instance;
}
Run Code Online (Sandbox Code Playgroud)

}

现在从第二堂课调用first.getInstance();

您也可以像这样以静态方式直接访问实例。first.instance.......
谢谢...

  • 请记住,只要该类存在于 jvm 中,静态引用就一直有效。因此,如果将 Activity 设置为静态变量,即使在 Activity 运行其 onDestroy 方法之后,也可能会遇到内存问题。 (4认同)