0

我有 3 个活动 A1,A2,A3

A1 调用 A2(A1 入栈)

A2 调用 A3(A2 也入栈)

并且 A3 调用 A1(A1 应该从堆栈调用而不是新实例......)

我不想创建 A1 的新实例,只是想从堆栈中调用它

我想向 A1 发送一些额外的字符串,问题就在这里,当我使用 putExtra() 向 A1 发送一些字符串时,A1 看不到它!

我将 getIntent() 放在 A1 的 onResume() 中,但它不起作用......

A3 中的代码

Intent in = new Intent(A3.this,A1.class);
in.putExtra("ACTIVITY", "A3");
in.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(in);

A1 中的代码

@Override
protected void onResume() {
  super.onResume();
  Log.e("LOG", getIntent().getExtras().getString("ACTIVITY"));
  if(getIntent().getExtras().getString("ACTIVITY")=="A3"){
     new LoadAllMyOrders().execute();
  }else{
     new LoadAllMyshops().execute();    
  }
}
4

5 回答 5

1

您可以对该变量使用共享首选项,也可以创建一个 gettersetter 类并使用它的对象在任何地方访问它。

于 2013-10-22T12:16:19.833 回答
1

您可以将 A1 的 Launch Mode 设置为“singleTask”,您应该从 Activity 的“void onNewIntent(...)”方法中获取意图。

于 2013-10-22T10:53:40.267 回答
1

您可以使用应用程序级静态变量并从任何您想要的地方设置它的值,然后您可以从您的活动中访问它!

于 2013-10-22T09:51:09.483 回答
1

如果我没有误解,您可以使用对startActivityForResult和来完成此行为onActivityResult。此外,Java 中的字符串比较是通过该equals方法执行的。==比较字符串引用

于 2013-10-22T09:52:12.967 回答
1

您应该将字符串与 equals() 进行比较,例如

if(getIntent().getExtras().getString("ACTIVITY").equals("A3")

==您只是在比较对象引用,这也可能是此表达式计算结果为 false 的原因。

于 2013-10-22T09:52:41.060 回答