onActivityResult()不被调用?

时间:2012-12-26 09:48:10

标签: java android android-intent android-activity

我有MainActivity,其中有两个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 。我有一个listview,用户可以从中选择值,选择值后,将设置结果并且活动将完成。对此的代码是:

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()  不会被称为。)

1 个答案:

答案 0 :(得分:1)

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