通过SearchActivity导航到另一个活动的片段

时间:2020-06-26 09:14:06

标签: android android-fragments android-jetpack android-architecture-navigation

在我的应用中,我正在使用Android Navigation Component。 我的MainActivity有一个NavigationGraph,我可以正确导航。由于还需要实现搜索功能,因此我在SearchFragment中添加了SearchActivity。搜索显示带有结果集的RecyclerView。当我单击这些结果之一时,我想导航到MainActivity的特定片段。

不幸的是,该应用程序只是导航到MainActivity的第一个片段。如何导航到另一个活动的片段?

MainActivity的导航图: NavGraph of MainActivity

SearchActivity的导航图: NavGraph of SearchActivity

我以此导航到MainActivity的片段

Bundle bundle = new Bundle();

bundle.putInt(SessionFragment.ARG_PARAM1, mSessions.get(position).session.getId());
navController.navigate(R.id.sessionFragment, bundle);

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我最终将MainActivity配置为SearchableActivity,并将SearchQuery传递给SearchFragment。

AndroidManifest:

<activity android:name=".MainActivity">
    <intent-filter>
        <action android:name="android.intent.action.SEARCH" />
    </intent-filter>

然后在MainActivity上检查SearchIntent并使用Query as Argument进行导航:

Intent intent = getIntent();
if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
    NavDirections action = HomeFragmentDirections.showSearch(
       intent.getStringExtra(SearchManager.QUERY)
    );
    navController.navigate(action);
}

在我的SearchFragment中,我按照Google文档所述处理搜索。 这可能不是最佳解决方案,但可以。