我有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()
不会被称为。)
答案 0 :(得分:1)
我找到了问题的解决方案。我只需要重启我的eclipse,我的代码就开始工作了。