我基本上设置了一些活动,如下所示(点击是ListViews)。
转到MyChild1的父类方法
public void onItemClick(int pos){
Intent i = new Intent(this, MyChild1.class);
i.putExtra("KEY1", myAdapter.getItem(pos).getId());
startActivity(i);
}
MyChild1类方法转到MyChild2
public void onItemClick(int pos){
Intent i = new Intent(this, MyChild2.class);
i.putExtra("KEY2", myAdapter2.getItem(pos).getId());
startActivity(i);
}
所以你看到我有一个父母,一个孩子和一个孙子活动。孩子根据父母提供的身份进行充气,孙子根据孩子的身份进行充气。这很好用。但是,当我从孙子使用 up 导航回到孩子时,它不再具有从父级到正确膨胀所需的id。我需要支持 up 导航,因为孩子可以根据孙子中的动作进行更改。
我可以将父母的ID一直传递给孙子活动,但我不知道如何将其传回来。我怎么处理这个?
编辑:更多上下文代码 这是我在onCreate上的活动。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_course);
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(R.id.container, new CourseActivityFragment()).commit();
Intent intent = getIntent();
courseId = intent.getIntExtra(MainFragment.COURSE_ID, 0);
System.out.println("the saved state was null");
// The above prints, so I know it enters this if statement
} else {
courseId = savedInstanceState.getInt(COURSE_ID);
}
}
这是我的onSaveInstanceState
@Override
public void onSaveInstanceState(Bundle savedInstanceState){
// Save current CourseId
savedInstanceState.putInt(COURSE_ID, courseId);
// Call superclass to save view hierarchy state
super.onSaveInstanceState(savedInstanceState);
}
答案 0 :(得分:2)
而不是startActivity
,请使用startActivityForResult
:
Intent intent = new Intent(ParentClass.this, ChildClass.class);
startActivityForResult(intent, RequestCode);
在子类中,在intent中设置一些参数以在Parent类中标识。
Intent intent = getIntent();
intent.putExtra(<Key>, <Value>);
在父类中,覆盖onActivityResult
方法,并检查该键的值
@Override
public void onActivityResult(int requestCode, int resultCode, Intent intent)
{
if (requestCode == RequestCode)
{
//Do something
}
}
答案 1 :(得分:1)
我不太关注你的需求,所以我希望这会有所帮助。将其作为成员变量保存在Activity类中。用户离开此活动后,活动的对象不会被销毁。如果仍然发生并且Android会终止您的活动,您可以使用onSaveInstanceState()
和restoreInstanceState()
方法来恢复此ID。