現在、ボタンをクリックすると、メソッド startActivityForResult(); が使用されます。答えを見つけて返します。
唯一の問題は、それが戻ると、アクティビティが再び開始されることです。個人的には、一度しか実行できないメソッドを持つことはまったく無意味だと思います。必要な回数だけ実行するようにメソッドに指示するために、メソッドに指定できるフラグが必要ですか?
javadoc を読みましたが、読み間違えていない限り、1 回限りの使用と書かれているため、役に立たないようです。
検索アクティビティで:
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);
}
};
MY MAIN ACTIVITY (IN Button LISTENER)
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);
}