0

現在、ボタンをクリックすると、メソッド 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);
}
4

2 に答える 2

0

あなたは間違いなく何か間違ったことをしています。メソッドは単に別のアクティビティを開始します。startActivity() と startActivityForResult() の間に実際の違いはありませんが、2 つ目のアクティビティには、起動されたアクティビティが終了すると、そのアクティビティから返された値をリッスンするコールバックにアタッチするオプションがあります。何をしているかを示すコードを貼り付けてください。どこが間違っているかすぐに指摘できると思います。

于 2012-01-04T18:09:08.870 に答える
0

アクティビティ間で結果を取得するために使用されるコールバック メソッドであることを理解する必要があります。
したがって、呼び出す回数を設定できるという意味はありません。
ただし、取得したデータを再利用したい場合は、最初に取得したインテント/データを保存して、好きなことをしてください。

于 2012-01-04T18:06:21.403 に答える