我的TextView
中有一个MainActivity
,而Button
附加了一个Fragment
MainActivity
。当我点击Button
我希望TextView
说出来时,"按下Clicked"。
这可能吗?
我知道连接到同一Fragments
的两个Activity
可以轻松地相互通信并相互发送数据。但是Fragment
中的对象可以将数据发送到Activity
使TextView
成为Fragment
并将其附加到Activity
是否更好?然后我可以简单地让两个片段相互发送数据。
很抱歉,如果这不是StackOverflow的正确问题类型。我是Fragments
的新手,并且未能就此问题找到明确的解释。
提前致谢!
答案 0 :(得分:4)
当前接受的答案(在活动中使用静态方法)既奇怪又可以说是“错误的”。
使用静态方法很奇怪,因为它不需要是静态的。
这是错误的,因为Fragment必须知道托管它的特定活动。这是“紧密耦合”,也使得片段不可重复使用。
这个问题有两种常见的解决方案:
答案 1 :(得分:1)
您可以在Activity中创建一个静态方法,其中包含TextView。当你需要更新时,只需从片段中调用它。 类似的东西:
活动:
public static void updateText(){
//your textview
text.setText("Button Clicked");
}
只需点击片段中的按钮即可调用它。
类似的东西:
来自片段:
//Inside Button click listener
MainActivity.updateText();
未经测试,但希望这种方法能够奏效。
答案 2 :(得分:0)
您是否尝试过getActivity()
方法来检索对父活动的引用,并使用方法设置数据,如:
// public final Activity getActivity ()
MyActivity activity = (MyActivity) getActivity();
activity.setText("...");
我可能错了,但我会尝试。