在您的 Fragment 中创建一个回调对象,将其注册到您的 FragmentActivity。如果 FragmentActivity 中已经设置了 mString,则可以通过回调立即返回,否则,当计算线程完成时,可以通过回调返回字符串。回调方法应该执行 Fragment 需要对字符串执行的任何操作,例如设置 TextView 的文本。
例如,创建一个名为 DynamicDataResponseHandler 的接口,如下所示:
public interface DynamicDataResponseHandler {
public void onUpdate(Object data);
}
然后在您的片段中,按如下方式实现该接口:
private class MyStringDataResponseHandler implements DynamicDataResponseHandler {
@Override
public void onUpdate(Object object) {
mYourTextView.setText((String)object);
}
}
然后,您的 Fragment 可以在其 onCreate 中实例化一个 MyStringDataResponseHandler 对象,通过 FragmentActivity 中的方法将其传递给 FragmentActivity,例如:
private MyStringDataResponseHandler mMyStringDataResponseHandler;
public void registerMyStringDataResponseHandler (DynamicDataResponseHandler callback) {
mMyStringDataResponseHandler = callback;
if(mString != null) {
mMyStringDataResponseHandler.onUpdate(mString);
}
}
在您的处理程序中,无论您在哪里获得 mString 的值,都可以执行以下操作:
if(mMyStringDataResponseHandler != null) {
mMyStringDataResponseHandler.onUpdate(mString);
}
阅读回调的概念,以更好地理解我在上面所做的事情以及您可以使用它们的其他方式。