我想創建一個子活動,它將在父活動對象上單擊打開。爲了更好地理解看到redbus應用的截圖:創建一個兒童活動從列表中選擇數據
在上輸入城市的第一屏幕用戶點擊(高亮紅色),然後進入到用戶通過與搜索有關城市選擇第二個屏幕城市的名字。然後點擊城市用戶後,返回到畫面1選擇的城市,也不會影響畫面的前一數據1.
我嘗試了一樣,你可以看到代碼:
UserDetails.java
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btnCancel:
CancelAll();
break;
case R.id.defenceArea:
DefenceAreaSelection();
break;
default:
}
}
private void DefenceAreaSelection() {
isSelection = true;
ArrayList<Integer> IdList = new ArrayList<>();
for (int i=0;i<mDefenceAreaModel.size();i++){
IdList.add(mDefenceAreaModel.get(i).getDefenseAreaID());
}
Intent intent = new Intent(UserDetails.this, ListSelection.class);
intent.putExtra("names",mDefenceAreaNames);
intent.putExtra("ID",IdList);
//TODO send 2 array for id and names to ease the process
startActivityForResult(intent,requestCodeDefenceArea);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == requestCodeDefenceArea){
Log.e("defe","got it");
}
}
ListSelection.java
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.list_select_screen);
Toolbar myToolbar = (Toolbar) findViewById(R.id.my_toolbar);
setSupportActionBar(myToolbar);
try {
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
} catch (NullPointerException e) {
e.printStackTrace();
//Log.e("exception",e.getMessage());
}
ArrayList<String> listNames = (ArrayList<String>) getIntent().getSerializableExtra("names");
ArrayList<Integer> listId = (ArrayList<Integer>) getIntent().getSerializableExtra("ID");
list = (ListView)findViewById(R.id.listNames);
ArrayAdapter adapter = new ArrayAdapter(ListSelection.this,android.R.layout.simple_dropdown_item_1line,listNames);
list.setAdapter(adapter);
//TODO onitem click set the result and go back to parent activity
}
但是我得到的問題是在選擇區域後返回到前一個屏幕,但屏幕1中的先前數據不再存在,這意味着除了活動結果之外,它還調用onCreate()
方法。