目前,当我点击我的按钮时,它使用方法startActivityForResult();它找到答案并返回。
唯一的问题是一旦它返回它将再次启动活动。就个人而言,我认为拥有一个只能运行一次的方法完全没有意义。当然必须有一个可以赋予方法的标志,以告诉它运行多次?
我已经阅读了javadoc并且它似乎没有帮助,因为它说它一次性使用,除非我读错了?
在我的搜索活动中:
private OnItemClickListener listListener = new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
// TODO Auto-generated method stub
String text = (String) ((TextView) arg1).getText();
String[] selected = text.split(" - ");
selected[0] = selected[0].replace(' ', '_');
Log.w("COMPANY", selected[0]);
Log.w("PART", selected[1]);
Intent data = new Intent();
data.putExtra("key", selected);
setResult(RESULT_OK, data);
finish();
// startActivity(switch2);
}
};
在我的主要活动中 (IN按钮听众)
if (search.isPressed() && searchPressed == false) {
// show search list
Intent switch1 = new Intent(MainActivity.this, SearchActivity.class);
startActivityForResult(switch1, 0);
}
@Override
protected void onActivityResult(int req, int resp, Intent data) {
super.onActivityResult(req, resp, data);
searchPressed = true;
Bundle searched = data.getExtras();
String[] newItem = searched.getStringArray("key");
if (newItem[0].endsWith("_")) {
handleXML(1);
tv1.setText("Higher");
tv2.setText("Lower");
} else {
handleXML(0);
tv1.setText("Wear Resistance");
tv2.setText("Tougher");
}
competitors = h.competitors;
String[] piece = competitors.findCompanyParts(newItem);
assignMaterials(piece);
window.setVisibility(VISIBLE);
grade.setVisibility(INVISIBLE);
geo.setVisibility(INVISIBLE);
s1.setVisibility(INVISIBLE);
s2.setVisibility(INVISIBLE);
search.setVisibility(INVISIBLE);
help.setVisibility(INVISIBLE);
myTabHost.setCurrentTab(0);
}
答案 0 :(得分:0)
你需要了解它的一个回调方法,用于在活动之间得到结果。
因此,没有必要设置它应被调用的次数。
但是如果你想重复使用它所包含的数据,那么首次保存你在其中获得的意图/数据并做任何你想做的事。
答案 1 :(得分:0)
你肯定做错了什么。 该方法只是启动另一个活动。 startActivity()和startActivityForResult()之间没有真正的区别,除了第二个可以选择附加到一个回调,该回调将从已启动的Activity一旦完成后侦听一些返回值。 你应该粘贴一些代码来告诉我们你在做什么,我相信我们会很快指出你出错的地方。