1

viewpagerindicator を使用してアプリケーションに取り組んでいます。

viewpagerindicator を含むメイン アクティビティでは、計算を行うスレッドをスピンオフし、アクティビティのインスタンス変数 mString を更新します。viewpagerindicator のフラグメントを mString で更新したいと考えています。ただし、フラグメントに到達するための最良の方法がわかりません。

これと同様のことを行う良いサンプルを知っている人はいますか?

4

2 に答える 2

1

開始後にViewPagerのフラグメントのUIを更新したいのですが、明確にしますか?

わかりました、この状況では

  1. カスタムフラグメントにパブリックメソッドを追加する必要があります。
  2. アクティビティでフラグメントを見つけます。
  3. 計算が完了したら、メソッドを呼び出します。

質問はこれと同じです

于 2012-11-24T08:38:58.003 に答える
1

Fragment にコールバック オブジェクトを作成し、FragmentActivity に登録します。mString が FragmentActivity で既に設定されている場合は、コールバックを介してすぐに返すことができます。それ以外の場合は、計算スレッドが終了したときに、コールバックを介して文字列を返すことができます。コールバック メソッドは、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);
   }
}

Handler 内で mString の値を取得する場合は、次のようにします。

if(mMyStringDataResponseHandler != null) {
   mMyStringDataResponseHandler.onUpdate(mString);
}

コールバックの概念を読んで、上記で行っていることと、コールバックを使用できる他の方法をよりよく理解してください。

于 2012-11-24T07:07:59.240 に答える