Skip to content

Commit 9a92ddd

Browse files
author
shuangshuang.qin
committed
底部导航切换fragment
1 parent 1f1cfb2 commit 9a92ddd

File tree

3 files changed

+44
-12
lines changed

3 files changed

+44
-12
lines changed

.idea/codeStyles/Project.xml

Lines changed: 24 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/src/main/java/com/aranandroid/customview/ui/SquareMoreActivity.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import android.annotation.SuppressLint
44
import android.app.Activity
55
import android.os.Bundle
66
import android.os.PersistableBundle
7+
import android.util.Log
78
import android.widget.RadioButton
89
import android.widget.Toast
910
import androidx.appcompat.app.AppCompatActivity
@@ -30,7 +31,9 @@ class SquareMoreActivity : FragmentActivity() {
3031
Toast.makeText(this ,"click",Toast.LENGTH_SHORT).show()
3132
}
3233
fragment_top.fragments = linkedMapOf(Pair(R.id.f, AFragment()),Pair(R.id.h, BFragment()))
33-
34+
fragment_top.changeItme={group, checkedId ->
35+
Log.e("TAG", "onCreate: "+checkedId )
36+
}
3437
}
3538

3639

customview/src/main/java/com/aranandroid/customview/fragment/FragmentBottom.kt

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -21,30 +21,35 @@ import com.aranandroid.customview.R
2121

2222
class FragmentBottom(context: Context?, attrs: AttributeSet?) : LinearLayout(context, attrs) {
2323

24-
var view:View
24+
var view: View
2525

26-
var radio:RadioGroup
26+
var radio: RadioGroup
2727

2828
var viewPager: ViewPager
2929

30-
var fragments: LinkedHashMap<Int,Fragment>? = null
30+
31+
var changeItme : (group: RadioGroup, checkedId: Int) -> Unit = {group, checkedId -> }
32+
33+
var fragments: LinkedHashMap<Int, Fragment>? = null
3134
set(value) {
3235
field = value
3336
radio.setOnCheckedChangeListener(RadioGroup.OnCheckedChangeListener { group, checkedId ->
3437
fragments?.keys?.let {
3538
for ((i, key) in it.withIndex()) {
36-
if(checkedId == key){
37-
viewPager.setCurrentItem(i,true)
39+
if (checkedId == key) {
40+
viewPager.setCurrentItem(i, true)
3841
}
3942
}
4043
}
44+
changeItme(group,checkedId)
4145
})
4246
val fm: FragmentManager = (context as FragmentActivity).getSupportFragmentManager()
4347
val myFragmentPagerAdapter =
44-
fragments?.values?.toList()?.let { MyFragmentPagerAdapter(fm, it) } //new myFragmentPagerAdater记得带上两个参数
48+
fragments?.values?.toList()
49+
?.let { MyFragmentPagerAdapter(fm, it) } //new myFragmentPagerAdater记得带上两个参数
4550
viewPager.adapter = myFragmentPagerAdapter
4651
viewPager.offscreenPageLimit = 3
47-
viewPager.addOnPageChangeListener(object : OnPageChangeListener{
52+
viewPager.addOnPageChangeListener(object : OnPageChangeListener {
4853
override fun onPageScrollStateChanged(state: Int) {
4954
}
5055

@@ -58,7 +63,7 @@ class FragmentBottom(context: Context?, attrs: AttributeSet?) : LinearLayout(con
5863
override fun onPageSelected(position: Int) {
5964
fragments?.keys?.let {
6065
for ((i, key) in it.withIndex()) {
61-
if(position == i){
66+
if (position == i) {
6267
radio.findViewById<RadioButton>(key).performClick()
6368
}
6469
}
@@ -73,7 +78,7 @@ class FragmentBottom(context: Context?, attrs: AttributeSet?) : LinearLayout(con
7378
viewPager = view.findViewById(R.id.pager)
7479
}
7580

76-
constructor(context: Context?):this(context,null){
81+
constructor(context: Context?) : this(context, null) {
7782

7883
}
7984

@@ -83,7 +88,7 @@ class FragmentBottom(context: Context?, attrs: AttributeSet?) : LinearLayout(con
8388
// addChildrenForAccessibility()
8489
val children = children
8590
for (child in children) {
86-
if(child.id != R.id.fragment_top){
91+
if (child.id != R.id.fragment_top) {
8792
(child.parent as ViewGroup).removeView(child)
8893
radio.addView(child)
8994
}
@@ -95,7 +100,7 @@ class FragmentBottom(context: Context?, attrs: AttributeSet?) : LinearLayout(con
95100
fm: FragmentManager?,
96101
list: List<Fragment>
97102
) :
98-
FragmentPagerAdapter(fm!!,FragmentPagerAdapter.BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT) {
103+
FragmentPagerAdapter(fm!!, FragmentPagerAdapter.BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT) {
99104
private val listfragment //创建一个List<Fragment>
100105
: List<Fragment>
101106

0 commit comments

Comments
 (0)