我在使用片段时遇到了问题,在第一个片段中我得到了一个textview,即:
<EditText
android:id="@+id/LeyOrdenanza"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="@dimen/dpde10"
android:ems="10"
android:hint="Ley / Ordenanza"
android:textColor="@color/cafeoscuro"
android:textColorHint="@color/cafeclaro"
android:textSize="@dimen/legra25" />
用户输入一个值,然后我更改了fragmet,在新的片段中我得到了一个按钮,该按钮调用包含这样片段的类中的函数:
EditText LeyOrdenanzav = (EditText) findViewById(R.id.LeyOrdenanza);
LeyOrdenanza = LeyOrdenanzav.getText().toString();
但我得到null,当我把功能按钮放在同一个片段上时,一切都像魅力,但我需要将该按钮更改为第二个片段,那当它停止工作时,有什么建议吗? 。
答案 0 :(得分:4)
嗨,我希望我的问题是对的, 为了在片段之间发送数据,你需要创建一个接口通信器,如下所示,我建议你创建一个新类,以免混淆自己。
public interface Communicator {
public void getData(String data);
}
让您的MainActivity实施Communicator,如下所示。
public class MainActivity extends ActionBarActivity implements Communicator
此方法将作为两个片段之间的中心。
在片段中创建Communicator的实例,从TextView
获取字符串Communicator communicator = (Communicator) getActivity();
现在传递字符串像communicator.getData(StringtToPass);
使用Fragment Manger
在方法中初始化Fragment的实例 FragmentManager fragmentManager = getFragmentManager(); fragmentTwo fragmentTwo = (fragmentTwo) fragmentManager.findFragmentById(R.id.fragmentTwo);
在Other片段上创建一个类似于此
的方法public void setData(String string) {
textView.setText(stringPassed);
}
在MainActivity中初始化Fragment后,您可以通过这种方式传递数据。
fragmentTwo.setData(StringToPass);
希望这会有所帮助。