Activity和Fragment通信的几种方式:

1.接口的方式:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class MainFragment : Fragment() {

private lateinit var name : String


fun setName(name : String){
this.name = name
}

override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return inflater.inflate(R.layout.fragment_main, container, false)
}

}
1
2
3
4
5
6
7
8
9
10
11
12
class MainActivity : AppCompatActivity() {

private lateinit var mainFragment: MainFragment

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

mainFragment = MainFragment()
mainFragment.setName("Hello")
}
}

2.Bundle的方式:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class MainFragment private constructor() : Fragment() {

private lateinit var name: String
private lateinit var mainFragment: MainFragment

companion object {
private lateinit var mainFragment: MainFragment

fun newInstance(bundle: Bundle): MainFragment {
mainFragment = MainFragment()
mainFragment.arguments = bundle
return mainFragment
}
}
}

3.广播方式

4.eventBus、RxBus等事件

5.文件(File、SharedPreference方式等)

本文地址: http://www.yppcat.top/2019/08/23/Activity和Fragment通信/