2

を使用するアクティビティがありますViewPagerIndicator。ページにフラグメントを設定するために、PagerAdapterを拡張するクラスを実装しました。FragmentPagerAdapter

私の活動では、これは私のコードです:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mAdapter = new PagerAdapter(getSupportFragmentManager());
    mPager = (ViewPager)findViewById(R.id.pager);
    mPager.setAdapter(mAdapter);
    mIndicator = (CirclePageIndicator)findViewById(R.id.indicator);

    mIndicator.setViewPager(mPager);
}

私のアクティビティには、オプション "A" を含むメニュー オプションもあります。ユーザーがオプションメニューをクリックして「A」を選択すると、私のアクティビティは現在のフラグメントのメソッドを呼び出します。しかし、活動はどのように知っていcurrentFragmentますか?

これ欲しい:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch(item.getItemId()) {
        case R.id.A:
            getCurrentFragment.Method(); //Method is the method that want to execute
        // ...
    }
}
4

2 に答える 2

0

はい、現在のフラグメントを取得できます:

getSupportFragmentManager().findFragmentByTag("android:switcher:"+R.id.viewpager+":0");

詳細については、次の質問と回答を参照してください。

ViewPager の一部として ListFragment のデータを更新する

ViewPager によって表示されている現在の Fragment にアクセスすることは可能ですか?

于 2013-05-22T14:52:06.510 に答える
0

あなたはあなた自身の質問に答えました。なにが問題ですか。私も同じ問題を抱えていました。ボタンがあり、さまざまなフラグメントでさまざまなタスクを実行したかったのです。私はこのコードを使用しました:

indicator.setOnPageChangeListener(new OnPageChangeListener() {
@Override
        public void onPageSelected(final int position) {
            // TODO Auto-generated method stub

            btn_calculate.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View arg0) {
                    // TODO Auto-generated method stub
                    switch (position) {
                        case 0:
                            Fragment0.calculator();
                            break;
                        case 1:
                            Fragment1.calculator();
                            break;
                        case 2:
                            Fragment2.calculator();
                            break;

                    }

                }
            });

そして、このコードを使用してフラグメントにアクセスします。

YourownFragment fragment = 
      (YourownFragment) getSupportFragmentManager().findFragmentByTag(
                   "android:switcher:"+R.id.viewpager+":0");

また、このコードを使用して現在のフラグメントにアクセスできます。

int current_item = mPager.getCurrentItem();
于 2013-08-13T17:28:59.220 に答える