我创建了一个具有自定义建议功能的应用程序。 MainActivity
将显示项目列表,并且还有一个SearchView
可从列表中搜索某些内容。当用户在SearchView
上放置东西时,会显示建议列表。当我点击其中一个建议时,它会将建议中的意图数据发送到可搜索的活动(SearchActivity
)。在此活动中,它将检查意图是来自ACTION_SEARCH
还是ACTION_VIEW
。如果ACTION_SEARCH
,它将在此活动中显示查询。否则,它将发送意图打开DetailsActivity
。在DetailsActivity
中,用户可以删除该项目。当用户点击删除按钮时,DetailsACtivity
将发送意向结果到MainActivity
,跳过SearchActivity
(我用完SearchActivity
发送意向打开DetailsActivity
)。我的代码显示没有错误,但我的项目不被删除,为什么意图结果不起作用?如何将意向结果数据发送到后面的2个活动(跳过以前的活动)?
下面是我的代码片段
MainActivity.java
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch(requestCode) {
case 12345:
if(resultCode == RESULT_OK) {
int pos = data.getIntExtra("DELETE", -1);
itemList.remove(pos);
mAdapter.notifyItemRemoved(pos);
}
break;
}
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.menu_search, menu);
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
SearchView searchView = (SearchView) menu.findItem(R.id.action_search).getActionView();
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
}
SearchActivity.java
private void handleIntent(Intent intent) {
if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
String query = intent.getStringExtra(SearchManager.QUERY);
txtQuery.setText("Search Query: " + query);
} else if (Intent.ACTION_VIEW.equals(intent.getAction())) {
Intent detail = new Intent(this, DetailsActivity.class);
int pos = intent.getIntExtra(SearchManager.EXTRA_DATA_KEY);
intent.putExtra("POS", pos);
startActivityForResult(detail, 12345);
finish();
}
}
DetailsActivity.java
removeButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int pos = getIntent().getIntExtra("POS", -1);
Intent intent = new Intent();
intent.putExtra("DELETE", pos);
setResult(RESULT_OK, intent);
finish();
}
});
代替'setResult(RESULT_OK,intent);''setResult(12345,intent);'接收结果。 – bGorle 2015-04-02 06:33:32
它不起作用 – stackex 2015-04-02 06:38:35
在else循环中删除'finish()'方法,如果您正在完成活动,您将如何收到结果... – bGorle 2015-04-02 06:41:37