要在活动之间传递数据,Bundle
例如,在此类活动中使用 ——B
Intent intent = new Intent(this, C.class);
Bundle b = new Bundle();
b.putBoolean("some_boolean_value", true);
b.putInt("some_int_value", 4);
b.putString("some_string_value", "foobar");
intent.putExtra("fooBundle", b);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
finish();
然后,从您的类活动“C”中,在它出现在屏幕上之后,从onCreate
方法中提取包:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState.containsKey("fooBundle")){
Bundle b = savedInstanceState.getBundle("fooBundle");
int nVal = b.getInt("some_int_value");
String sVal = b.getString("some_string_value");
boolean blnVal = b.getBoolean("some_boolean_value");
// Do whatever you have to do, put them into textview's etc.
}
}
请注意,如何进行检查以确保确实有一个包,如果没有,它是一个“空视图”,即没有数据可以预填充到字段中。并反转从Bundle中提取值。
当您退出课堂活动C
时,它会返回活动A
。
编辑
OP 坚持使用“两个”后退键击,这被认为是不必要的,因为指示活动的标志已从堆栈中清除。
A -> B
在上述代码中创建意图并运行之前,堆栈现在变为......
A -> C
现在C
按返回键退出活动。
一个