2

私は非常に単純なことをしようとしています。2 つのタブがあり、1 つは犬の品種に関する情報を表示し、もう 1 つは人々がその品種を説明するために書いたレビューのリストを表示しています。タブに書かれたレビューの数も含めたいので、次のようになります。

品種情報 | レビュー(19)

問題は、タブにあるレビューの数を確認するために、最初にそのレビュー データをダウンロードする必要があることです。

そこで、私が解決策として考えたのは、BreedProfile.java (ShelockActivity) に最初にタブを追加することでした。

ActionBar.Tab reviewTab= ab.newTab();
reviewTab.setText("Reviews");
mTabsAdapter.addTab(reviewTab, DogReviewFragment.class, null);

次に、BreedProfileReviewFragment.java でレビューをダウンロードし、reviewTab のテキストを次のように更新します。

getActivity().getActionBar().getTabAt(1).setText("Reviews 10");

ただし、LogCat によると、上記の方法は存在しません。

03-05 18:15:26.460: E/AndroidRuntime(1286): FATAL EXCEPTION: main
03-05 18:15:26.460: E/AndroidRuntime(1286): java.lang.NoSuchMethodError: android.support.v4.app.FragmentActivity.getActionBar

私の質問は、FRAGMENT から TAB にアクセスして、追加後に TAB の TEXT プロパティを変更することは可能ですか? もしそうなら、どうすればそれを達成できますか?

ノート:

  1. APIが別なので品種情報と一緒にレビューをダウンロードできません。

  2. BreedProfile.java は、ListActivity BreedList.java 内の品種のリストから発生します。

4

1 に答える 1

2

を実装できますInterface。そのため、フラグメントの親アクティビティでコードを実行できます。

以下のように、フラグメントにインターフェイスを作成します。

public interface OnQuestionSelectedListener {
 void onQuestionSelected(int Position, boolean isFirstTime);
}

以下のように、親アクティビティ側で実装します。

public class YourParentActivity extends Activity implements YourFragment.OnQuestionSelectedListener{
       @Override
    public void onQuestionSelected(int position, boolean isFirstTime) {
        // your code.
         }
}

以下のようにフラグメントから呼び出します。

((YourParentActivityName)getActivity()).onQuestionSelected(position, true);

(必要に応じてコードを変更できます)
フラグメントのすべてのロジックをその親に転送することは非常に良い方法です.UI部分にフラグメントを使用すると信じておりInterface、フラグメントを転送する良い方法を提供します親へのメッセージ。親ですべてのアクティビティを実行し、結果を対応するフラグメントに転送します。

これが役立つことを願っています。

于 2013-03-05T11:57:00.633 に答える