2016-04-16 30 views
0

我试图从片段A两个字符串发送到碎片B.目前,我实现了一个interface听众像这样...传递给不同片段时字符串不会更新?

片段A法:

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

((TextFooterListener) getActivity()).onTextFooterListener(arrayTitle1, arrayTitle2); 

我通过这些字符串到它们发送到片段B这样的活动...

活动:

@Override 
public void onTextFooterListener(String arrayTitle1, String arrayTitle2) { 

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

} 

片段B:

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

public String arrayTitle1; 
public String arrayTitle2; 

而在片段B的onCreateView,我尝试分配这些字符串。

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

但不幸的是,每当片段A的方法被调用时,onTextFooterListener似乎并没有更新的字符串。

有什么建议吗?

回答

1

您更改了Fragment 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); 
} 
+0

谢谢!得到它的工作。 –

1

有你需要使用将数据传递到片段的机制。请考虑以下方法:

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