android-fragments 从类似导航链接的另一个片段导航片段

i2byvkas  于 2022-11-14  发布在  Android
关注(0)|答案(1)|浏览(165)

在应用程序中,我有:
1.一项主要活动

  1. 4个片段
    2.a.家庭片段2.b.数据片段2.c.图片片段2.d.链接片段
    因此,在home片段中,有3个图片链接到数据、图片和链接片段。还有一个NavigationView也链接到片段。
    现在,我想添加这些链接到每个图片,这样它就可以作为一个导航链接,并转发到同一个片段。如何实现这一点?
    目前,我在home片段中使用setOnClickListener来转发每个片段,但我相信有更好的方法来实现这一点?这是因为当我使用setOnClickListener时,它不会更新当前的导航链接。
    Layout
vyu0f0g1

vyu0f0g11#

这是一个非常常见的任务,Google为此引入了Navigation组件。请参见https://developer.android.com/guide/navigation/navigation-getting-started
一些参考代码(你还需要导航图):

在主活动中

public class MainActivity extends AppCompatActivity {
   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      NavController navController = Navigation.findNavController(this, 
      R.id.nav_host_fragment);
    }
}

在主活动XML中:

<fragment
    android:id="@+id/nav_host_fragment"
    android:name="androidx.navigation.fragment.NavHostFragment"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    app:defaultNavHost="true"
    app:layout_constraintBottom_toTopOf="@+id/bottomNavigationBorder"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:navGraph="@navigation/nav_graph" />

在导航片段的“onViewCreated”中

NavController navController = Navigation.findNavController(view);
btnAction.setOnClickListener(new View.OnClickListener() {
   @Override
   public void onClick(View v) {
      Bundle bundle = new Bundle();
      bundle.putInt("ACTION", "1");
      navController.navigate(R.id.action_mainFragment_to_nextFragment, bundle);
   }
});

函数navController.navigate()可以有一个或两个参数。bundle是可选的,如果你想向目标片段发送信息,就可以使用它。“R. id.....”属性在导航图中定义,它描述了两个片段/活动之间的链接。
希望这对你有帮助。

相关问题