单击第一个片段上的按钮,如何将消息从一个片段发送到另一个片段?

时间:2019-01-04 11:28:23

标签: android android-fragments

我已经尝试过此代码,但是单击“第一个片段”中的按钮并不会更改“第二个”中的字符串值。

这是“第一片段”的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()
    }

}

1 个答案:

答案 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");