我正在使用viewpagerindicator处理应用程序。
在我的主要活动中有viewpagerindicator,我分离了一个做一些计算的线程并更新了一个活动的实例变量mString。我想用mString更新viewpagerindicator中的片段。但是,我似乎无法弄清楚到达片段的最佳方式。
有没有人知道任何与此类似的好样品?
答案 0 :(得分:1)
在Fragment中创建一个回调对象,将其注册到FragmentActivity。如果已经在FragmentActivity中设置了mString,那么你可以通过回调立即返回它,否则,当计算线程完成时,它可以通过回调返回字符串。回调方法应该执行Fragment需要对字符串执行的任何操作,例如设置TextView的文本。
E.g。创建一个名为DynamicDataResponseHandler的接口,如下所示:
public interface DynamicDataResponseHandler {
public void onUpdate(Object data);
}
然后在Fragment中,按如下方式实现该接口:
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);
}
}
无论你在Handler中获得mString的值,都可以这样做:
if(mMyStringDataResponseHandler != null) {
mMyStringDataResponseHandler.onUpdate(mString);
}
对Callbacks的概念进行一些阅读,以便更好地理解我在上面做的事情以及其他可以使用它们的方法。
答案 1 :(得分:1)
你想在ViewPager启动后更新片段的UI,我是否清楚了?
好的,在这种情况下
问题与this one相同。