字符串在传递给不同的片段时不会更新?

时间:2016-04-16 14:33:45

标签: java android android-fragments

我试图从片段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;

}

我将这些字符串传递给Activity,将它们发送到Fragment B,就像这样...

活动:

public String arrayTitle1;
public String arrayTitle2;

片段B:

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

onCreateView

在片段B的arrayTitle1Footer.setText(arrayTitle1); arrayTitle2Footer.setText(arrayTitle2); 中,我尝试分配这些字符串。

onTextFooterListener

但不幸的是,每当调用Fragment A的方法时,{{1}}似乎都没有更新字符串。

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

您更改了片段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);
}

答案 1 :(得分:1)

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

@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);
}

然后在FragmentB的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);
}