1

I am working on an application using viewpagerindicator.

In my main activity that has the viewpagerindicator, I spin off a thread that does some computation and updates a an instance variable mString of the activity. I want to update a fragment in the viewpagerindicator with the mString. However, I can't seem to figure out the best way to reach the fragment.

Does anyone know of any good samples that do something similar to this?

4

2 回答 2

1

在您的 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);
}

阅读回调的概念,以更好地理解我在上面所做的事情以及您可以使用它们的其他方式。

于 2012-11-24T07:07:59.240 回答
1

您想在 ViewPager 启动后更新 Fragment 的 UI,我说清楚了吗?

好的,在这种情况下

  1. 您应该在自定义片段中添加一个公共方法。
  2. 在您的活动中找到片段。
  3. 计算完成后调用该方法。

这个问题与相同。

于 2012-11-24T08:38:58.003 回答