我創建了一個具有自定義建議功能的應用程序。 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