是將查詢結果顯示在 SearchResultActivity,如果我想將查詢結果顯示在 MainActivity 呢?
可以的,只要稍加修改,將部份程式碼從 SearchResultActivity 搬到 MainActivity 就行了
AndroidManifest.xml 內容:
...
...
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<!-- Points to searchable activity so the whole app can invoke search. -->
<meta-data
android:name="android.app.default_searchable"
android:value=".MainActivity" />
<activity
android:name=".MainActivity"
android:launchMode="singleTop">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<action android:name="android.intent.action.SEARCH" />
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
<meta-data
android:name="android.app.searchable"
android:resource="@xml/searchable"/>
</activity>
</application>
activity_main.xml 內容:
<RelativeLayout
...
...>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="search result"
android:id="@+id/txt1"/>
</RelativeLayout>
MainActivity 內容:
...
...
import android.app.SearchManager;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.Menu;
import android.view.MenuInflater;
import android.support.v7.widget.SearchView;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity
{
TextView txt1;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
txt1 = (TextView) findViewById(R.id.txt1);
// 注意這一行指令
handleIntent(getIntent());
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.options_menu, menu);
// Associate searchable configuration with the SearchView
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
SearchView searchView = (SearchView) menu.findItem(R.id.search).getActionView();
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
// 顯示完成鈕
searchView.setSubmitButtonEnabled(true);
return true;
}
@Override
protected void onNewIntent(Intent intent)
{
handleIntent(intent);
}
private void handleIntent(Intent intent)
{
if (Intent.ACTION_SEARCH.equals(intent.getAction()))
{
String query = intent.getStringExtra(SearchManager.QUERY);
txt1.setText("傳遞的查詢字串為 "+query.toString());
}
}
}