我已经尝试过此代码,但是单击“第一个片段”中的按钮并不会更改“第二个”中的字符串值。
这是“第一片段”的kotlin文件。单击有两个按钮,可以更改字符串值。如Android文档中所述,我还在类OnButtonClickListener
中创建了一个内部接口。
viewHolder = inflater.inflate(R.layout.fragment_test_one, container, false)
viewHolder.btnFragTestOneMessageOne.setOnClickListener {
listener.onButtonCLickListener("MESSAGE ONE")
}
viewHolder.btnFragTestOneMessageTwo.setOnClickListener {
listener.onButtonCLickListener("MESSAGE TWO")
}
return viewHolder
这是第二个片段。该片段的布局还具有textView,必须在“第一”片段中单击按钮才能更改它。
lateinit var viewHolder: View
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
viewHolder = inflater.inflate(R.layout.fragment_test_two, container, false)
return viewHolder
}
这是活动文件。
override fun onButtonCLickListener(strMessage: String) {
testTwoFragment.viewHolder.tvFragTestTwo.text = strMessage
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_fragment_test)
supportFragmentManager.beginTransaction().add(R.id.flFragTest, TestOneFragment()).commit()
btnTestFragOne.setOnClickListener {
supportFragmentManager.beginTransaction().replace(R.id.flFragTest, testOneFragment).commit()
}
btnTestFragTwo.setOnClickListener {
supportFragmentManager.beginTransaction().replace(R.id.flFragTest, testTwoFragment).commit()
}
}
答案 0 :(得分:2)
然后将您的消息更改为字符串格式
使用捆绑包发送字符串:
//Put the value
YourNewFragment ldf = new YourNewFragment ();
Bundle args = new Bundle();
args.putString("YourKey", "YourValue");
ldf.setArguments(args);
//Inflate the fragment
getFragmentManager().beginTransaction().add(R.id.container, ldf).commit();
在新的片段的onCreateView中:
//Retrieve the value
String value = getArguments().getString("YourKey");