我有MainActivity
,其中导航栏包括4个按钮,我想在我的MainActivity
中替换基于在导航栏中单击按钮的片段。
代码activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<com.ismaeldivita.chipnavigation.ChipNavigationBar
android:id="@+id/chipNavigationBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:background="#fff"
android:padding="8dp"
app:cnb_menuResource="@menu/bottom_menu"
app:layout_constraintBottom_toBottomOf="parent"
tools:ignore="MissingConstraints" />
<androidx.fragment.app.FragmentContainerView
android:id="@+id/fragment"
android:name="com.my.app.HomeFragment"
android:layout_width="fill_parent"
android:layout_height="0dp"
app:layout_constraintBottom_toTopOf="@+id/chipNavigationBar"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="MissingConstraints"
tools:layout_editor_absoluteX="125dp" />
</androidx.constraintlayout.widget.ConstraintLayout>
MainActivity.kt
class MainActivity : AppCompatActivity() {
private val menu by lazy { findViewById<ChipNavigationBar>(R.id.chipNavigationBar) }
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// Fragments
menu.setItemSelected(R.id.home)
// USING: https://github.com/ismaeldivita/chip-navigation-bar
menu.setOnItemSelectedListener { id ->
menu.setItemSelected(id)
}
// End of Fragments
}
}
解释// in XML
<androidx.fragment.app.FragmentContainerView
android:id="@+id/fragment"
android:name="com.my.app.HomeFragment" // set default fragment onCreate
// in MainActivity
menu.setItemSelected(R.id.home) // set default active nav item
<标题>现在我的应用程序onCreate将加载默认片段为项目1我的导航,我的问题是我如何设置其他片段为其他3个按钮在我的导航?(另外)如果let say
用户想从项目3返回到项目1,项目1应该被设置为这个默认片段。
任何想法?
标题>标题>我说的是这样的结构:
menu.setOnItemSelectedListener { id ->
val transaction = supportFragmentManager.beginTransaction()
when (id) {
R.id.your_id-> {
transaction.replace(R.id.contentContainer, YourFrag()).commit()
}
...
}
}
因此,您将处理选定的id,然后对片段进行事务处理。