我正在开发一个使用viewpagerindicator的应用程序。
在我的主活动中,具有viewpagerindicator,我派生了一个线程,该线程执行一些计算并更新活动的实例变量mString。我想用mString更新视图页面指示器中的片段。然而,我似乎找不到到达碎片的最好方法。
有没有人知道有什么好的样本可以做类似的事情?
发布于 2012-11-24 15:07:59
在你的片段中创建一个回调对象,用你的FragmentActivity注册它。如果已经在FragmentActivity中设置了mString,那么您可以通过回调立即返回它,否则,当计算线程完成时,它可以通过回调返回字符串。回调方法应该做片段需要对字符串做的任何事情,例如设置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);
}
}然后,您的片段可以在其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);
}做一些关于回调的概念的阅读,以更好地理解我上面所做的事情以及你可以使用它们的其他方式。
发布于 2012-11-24 16:38:58
您想在启动后更新ViewPager中的分片的UI,我说清楚了吗?
好的,在这种情况下
你应该在你的自定义片段中添加一个公共方法。在计算完成后,在你的Activity.
这个问题对于this one也是一样的。
https://stackoverflow.com/questions/13378264
复制相似问题