0

我有一个MainActivitywhich 有两个TextView. 用户可以选择开始另一个活动并从中选择数据ListView来填充这些TextView. 我的主要活动有一个OnClickListener开始Activty,用户可以从中选择数据并返回主要活动。我的OnClickListener代码如下所示:

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 中存在错误。在 startActivityForResult(intent, requestCode);这个函数中,只要requestCode = 0. 但是,如果您将请求代码更改为零以外的任何值,ApiDemos 将失败(并且不会调用 onActivityResult())。

4

1 回答 1

1

我找到了我的问题的解决方案。我只需要重新启动我的 Eclipse,我的代码就开始工作了。

于 2012-12-26T15:22:15.047 回答