将数据发送回当前活动的“上一个活动”,该活动由“其他活动”打开

时间:2016-12-16 12:13:54

标签: android

我有6项活动 - A,B,C,D,E,F。
A打开B,B打开C,依此直到F.我现在在F,然后从F,我使用Intent.FLAG_ACTIVITY_CLEAR_TOP打开B并在后台维护A.

现在我想在按下后退按钮时从B活动将数据发送回A.请帮助!!

2 个答案:

答案 0 :(得分:0)

如果你使用startActivityForResult然后需要在所有6个活动中使用,那么将有两个方法,这将需要在onActivityResult的所有活动中进行代码更改这意味着你必须在堆栈中维护所有6个活动,直到你的工作完成后完成使用F只需设置数据并完成F将收到E只是将收到的数据传递给D并完成E你必须保持这个直到A,这将导致你额外的编码和努力。

第二种方法是不使用Intent.FLAG_ACTIVITY_CLEAR_TOP并使用Intest.FLAG_ACTIVITY_CLEAR_TOP维护A并在后台堆栈中维护A,因此不会在堆栈中维护A.就像这个打开A有你在B中的数据,但我不知道这在你的情况下是可行的。

答案 1 :(得分:0)

您可以使用静态方法将数据从一个活动发送到另一个活动(当活动没有直接链接且不想重新创建第一个活动时)

在第一次激活..

public class A extends Activity {

static A INSTANCE;
String data=""; 

@Override
public void onCreate(Bundle savedInstanceState) {

INSTANCE=this; 
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}

public static A getActivityInstance()
{
  return INSTANCE;
}

 public void getData(String b_data)
 {
  data = b_data;
  }
 }

第二项活动:

 public class Second extends Activity {

 @Override
 public void onCreate(Bundle savedInstanceState) {

 super.onCreate(savedInstanceState);
 setContentView(R.layout.main1);     
 }
}
 @Override
 public void onBackPressed()
{
  A.getActivityInstance().getData("Your data");  
  super.onBackPressed(); 
 }

希望这会对你有所帮助。