0

MainActivityは2つの を持っていますTextView。ユーザーには、別のアクティビティを開始し、そこからデータを選択しListViewてそれらを埋めるオプションがありますTextView。私のメイン アクティビティには、ユーザーがデータを選択してメイン アクティビティに戻ることができるOnClickListenerを開始するがあります。私のコードは次のようになります。ActivtyOnClickListener

private static final int PICK_START = 0;
private static final int PICK_END = 1;
@Override
    public void onClick(View v) {
        Log.i(MainActivity, "view clicked");
        int id = v.getId();

        if (id == R.id.searchR) {
                        //do nothing
        } else if (id == R.id.startSearch) {
            Intent startIntent = new Intent(this, SList.class);
            startActivityForResult(startIntent, PICK_START);

        } else if (id == R.id.endSearch) {
            Intent startIntent = new Intent(this, SList.class);
            startActivityForResult(startIntent, PICK_END);
        }

    }

上記の onClick メソッドが呼び出された後、別のアクティビティSList.classが開始されます。ユーザーが値を選択できるリストビューがあり、値を選択すると結果が設定され、アクティビティが終了します。これのコードは次のとおりです。 :

sListview.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                Station selectedS = sArray.get(position);
                Intent returnIntent = new Intent();
                returnIntent.putExtra("_id", selectedS.getId());
                returnIntent.putExtra("name", selectedS.getName());
                setResult(RESULT_OK, returnIntent);
                finish();
            }
        });

上記のコード アクティビティでは、結果が設定され、それ自体が終了します。ここまでは、すべてが適切に機能しています。ただし、その後、前のアクティビティが開始されると、onActivityResult()メソッドは呼び出されません。コードonActivityResult()は次のとおりです。

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        Log.i(MainActivity, "" + requestCode);

        // Make sure the request was successful
        if (resultCode == RESULT_OK) {
            // Check which request we're responding to
            if (requestCode == PICK_START) {
                //data.getStringExtra("_id");
                Log.i(MainActivity, data.getStringExtra("name"));

            } else if (requestCode == PICK_END) {
                Log.i(MainActivity, data.getStringExtra("name"));
            }
        }
    }

onActivityResult がトリガーされない理由がわかりません。誰かが彼のブログに Android API にバグがあると書いています。In startActivityForResult(intent, requestCode);この関数は、 である限り機能しrequestCode = 0ます。ただし、リクエスト コードを 0 以外に変更すると、ApiDemos は失敗します (onActivityResult() は呼び出されません)。

4

1 に答える 1

1

問題の解決策を見つけました。日食を再起動するだけで、コードが機能し始めました。

于 2012-12-26T15:22:15.047 に答える