如何获取另一个片段的值,使其不是活动中的当前片段

时间:2014-05-10 18:26:47

标签: android

我在使用片段时遇到了问题,在第一个片段中我得到了一个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,当我把功能按钮放在同一个片段上时,一切都像魅力,但我需要将该按钮更改为第二个片段,那当它停止工作时,有什么建议吗? 。 trying to explian the problem

1 个答案:

答案 0 :(得分:4)

嗨,我希望我的问题是对的, 为了在片段之间发送数据,你需要创建一个接口通信器,如下所示,我建议你创建一个新类,以免混淆自己。

public interface Communicator {
 public void getData(String data);
}

让您的MainActivity实施Communicator,如下所示。

public class MainActivity extends ActionBarActivity implements Communicator

实现通信器后,在你的Case中以String的形式添加umimplemented方法,即getData。

此方法将作为两个片段之间的中心。

在片段中创建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);

希望这会有所帮助。