我从父活动中调用子活动 我的孩子活动是列表视图& parent包含列表视图中的数据,例如选定列表项父级按钮文本中的名称和ID
A-> B-> C和c是使用Intent关闭后将数据发送回Parent B的列表视图 并使用
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
一次只制作一个活动实例 但我的问题是 我正在使用按钮单击来调用列表视图活动,并且在选择时我将值返回到父级,在单击按钮的情况下工作正常 但是如果我使用多个按钮来调用具有不同数据的列表视图,每次它不会将先前选择的数据保留到父活动时它就会被消灭
父母&列表视图子
如何在每个按钮上保留不同的值
ParentActivity.java
btnCust = (Button) findViewById(R.id.btnCust);
btnCust.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
String flag ="CU";
//Intent intent = new Intent(getBaseContext(),MyListActivity.class);
//intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
//intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
//intent
Intent i = new Intent(getBaseContext(),MyListActivity.class);
i.putExtra("flag", flag);
startActivityForResult(i, 1);
}
});
btnPospect = (Button) findViewById(R.id.btnPospect);
btnPospect.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
String flag ="P";
//Intent intent = new Intent(getBaseContext(),MyListActivity.class);
//intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
//intent.putExtra("flag", flag);
/*Intent i = new Intent(getBaseContext(), MyListActivity.class);
i.putExtra("flag", flag);
startActivityForResult(i, 1);
startActivity(i);*/
Intent i = new Intent(getBaseContext(),MyListActivity.class);
i.putExtra("flag", flag);
startActivityForResult(i, 2);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
name = data.getStringExtra("nm");
if(requestCode==1 && resultCode==RESULT_OK){
btnCust.setText(name);
}
if(requestCode==2 && resultCode==RESULT_OK) {
btnPospect.setText(name);
}
}
子listview.java中的
if (flag.equals("CU")) {
custList = db.getAllCustomers();
cl.setCustLst(custList);
} else if (flag.equals("P")) {
prosList = db.getAllProspects();
cl.setProsLst(prosList);
}
final CustomListenerAdapter customAdapter = new CustomListenerAdapter(this, cl);
list.setAdapter(customAdapter);
if (flag.equals("CU")) {
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> myAdapter, View myView,int myItemInt, long mylng) {
Customer cust = (Customer) customAdapter.getItem(myItemInt);
id = cust.getId();
nm = cust.getNm();
close();
}
});
}else if (flag.equals("P")) {
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> myAdapter, View myView,
int myItemInt, long mylng) {
Prospect pros = (Prospect) customAdapter.getItem(myItemInt);
id = pros.getId();
nm = pros.getNm();
close();
}
});
}
public void close() {
Intent intent=new Intent();
intent.putExtra("flag",flag);
intent.putExtra("id", id);
intent.putExtra("nm", nm);
setResult(RESULT_OK,intent);
finish();
}
答案 0 :(得分:4)
在父活动中
btn1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
startActivityForResult(new Intent(ParentActivity.this,ChildActivity.class),1);
}
});
btn2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
startActivityForResult(new Intent(ParentActivity.this,ChildActivity.class),2);
}
});
父活动中的onActivityResultMethod()
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode==1 && resultCode==RESULT_OK)
{
btn1.setText(data.getStringExtra("text"));
}
if(requestCode==2 && resultCode==RESULT_OK)
{
btn2.setText(data.getStringExtra("text"));
}
}
在儿童活动中
list.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v,
int position, long id) {
Intent intent=new Intent();
intent.putExtra("text",your_text_to_send_back);
setResult(RESULT_OK,i);
finish();
}
});
您在移动设备中的设置有问题。 取消选中开发者选项设置中的不要保留活动。它会正常工作。
答案 1 :(得分:2)
实际上,您可以将数据保留在这些活动类之外
如果您的数据不是很重,您可以使用单例模式。然后可以从所有类访问数据。