Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 字符串不';当传递到不同的片段时是否更新?_Java_Android_Android Fragments - Fatal编程技术网

Java 字符串不';当传递到不同的片段时是否更新?

Java 字符串不';当传递到不同的片段时是否更新?,java,android,android-fragments,Java,Android,Android Fragments,我试图将两个字符串从片段A发送到片段B。目前,我已经实现了一个接口侦听器,如下所示 方法片段: String arrayTitle1 = arrayList.get(Index).get("ArrayTitle1"); String arrayTitle2 = arrayList.get(Index).get("ArrayTitle2"); ((TextFooterListener) getActivity()).onTextFooterListener(arrayTitle1, arrayT

我试图将两个字符串从片段A发送到片段B。目前,我已经实现了一个
接口
侦听器,如下所示

方法片段:

String arrayTitle1 = arrayList.get(Index).get("ArrayTitle1");
String arrayTitle2 = arrayList.get(Index).get("ArrayTitle2");

((TextFooterListener) getActivity()).onTextFooterListener(arrayTitle1, arrayTitle2);
@Override
public void onTextFooterListener(String arrayTitle1, String arrayTitle2) {

    FragmentB.arrayTitle1 = arrayTitle1;
    FragmentB.arrayTitle2 = arrayTitle2;

}
我将这些字符串传递给活动,活动将它们发送到片段B,如下所示

活动:

String arrayTitle1 = arrayList.get(Index).get("ArrayTitle1");
String arrayTitle2 = arrayList.get(Index).get("ArrayTitle2");

((TextFooterListener) getActivity()).onTextFooterListener(arrayTitle1, arrayTitle2);
@Override
public void onTextFooterListener(String arrayTitle1, String arrayTitle2) {

    FragmentB.arrayTitle1 = arrayTitle1;
    FragmentB.arrayTitle2 = arrayTitle2;

}
片段B:

String arrayTitle1 = arrayList.get(Index).get("ArrayTitle1");
String arrayTitle2 = arrayList.get(Index).get("ArrayTitle2");

((TextFooterListener) getActivity()).onTextFooterListener(arrayTitle1, arrayTitle2);
@Override
public void onTextFooterListener(String arrayTitle1, String arrayTitle2) {

    FragmentB.arrayTitle1 = arrayTitle1;
    FragmentB.arrayTitle2 = arrayTitle2;

}
然后它们被接收并作为公共字符串存储在片段B中

public String arrayTitle1;
public String arrayTitle2;
在片段B的
onCreateView
中,我尝试分配这些字符串

arrayTitle1Footer.setText(arrayTitle1);
arrayTitle2Footer.setText(arrayTitle2);
但不幸的是,每当调用片段A的方法时,
onTextFooterListener
似乎不会更新字符串


有什么建议吗?

您更改了片段B中的值,但从未实际将新值重新分配到文本视图中

改变

@Override
public void onTextFooterListener(String arrayTitle1, String arrayTitle2) {
    FragmentB.setTitles(arrayTitle1, arrayTitle2);
}
在片段B中:

public void setTitles(String title1, String title2) {
    arrayTitle1 = title1;
    arrayTitle2 = title2;
    arrayTitle1Footer.setText(arrayTitle1);
    arrayTitle2Footer.setText(arrayTitle2);
}

您更改片段B中的值,但从未实际将新值重新分配到TextView中

改变

@Override
public void onTextFooterListener(String arrayTitle1, String arrayTitle2) {
    FragmentB.setTitles(arrayTitle1, arrayTitle2);
}
在片段B中:

public void setTitles(String title1, String title2) {
    arrayTitle1 = title1;
    arrayTitle2 = title2;
    arrayTitle1Footer.setText(arrayTitle1);
    arrayTitle2Footer.setText(arrayTitle2);
}

您需要使用一种机制将数据传递给片段。请考虑以下方法:

@Override
public void onTextFooterListener(String arrayTitle1, String arrayTitle2) {
    Bundle data = new Bundle();
    data.putString("array1", arrayTitle1);
    data.putString("array2", arrayTitle2);

    FragmentB b = FragmentB();
    b.setArguments(data);
}
然后在片段b的
onCreateView
中:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    arrayTitle1 = getArguments().getString("array1");    
    arrayTitle2 = getArguments().getString("array2");  

    arrayTitle1Footer.setText(arrayTitle1);
    arrayTitle2Footer.setText(arrayTitle2);

    return inflater.inflate(R.layout.fragment, container, false);
}

您需要使用一种机制将数据传递给片段。请考虑以下方法:

@Override
public void onTextFooterListener(String arrayTitle1, String arrayTitle2) {
    Bundle data = new Bundle();
    data.putString("array1", arrayTitle1);
    data.putString("array2", arrayTitle2);

    FragmentB b = FragmentB();
    b.setArguments(data);
}
然后在片段b的
onCreateView
中:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    arrayTitle1 = getArguments().getString("array1");    
    arrayTitle2 = getArguments().getString("array2");  

    arrayTitle1Footer.setText(arrayTitle1);
    arrayTitle2Footer.setText(arrayTitle2);

    return inflater.inflate(R.layout.fragment, container, false);
}