Android Java Activity显示哪些片段可见

时间:2017-07-19 18:53:01

标签: java android android-fragments android-activity android-fragmentactivity

我现在正在学习活动和碎片。我有一个简单的应用程序,只要我点击一个按钮就可以更改片段视图。我还注意到我可以在不同的碎片之间滑动。

在我的活动中,当我点击一个按钮时,我有一个TextView,它将显示我所在的片段。当我在活动之间滑动时,我也喜欢Activity的TextView显示我在哪个片段。

例如,当我在我的Activity中单击btn2时,TextView将显示"您在tab2"中。当我滑动到下一个片段时,我希望我的活动能够显示类似于"你在tab3"根据正在查看的片段。

我已经使用OnDataPass来完成用户在Fragment中提交信息时的内容。当用户滑动到不同的片段以让Activity知道在TextView中显示什么时,我可以通过另一种方式传递数据?或者我会继续使用OnDataPass吗?

这是我的活动:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    textView = (TextView) findViewById(R.id.textview);

    mSectionsPageAdapter = new SectionsPageAdapter(getSupportFragmentManager());
    mViewPager = (ViewPager) findViewById(R.id.container);
    setupViewPager(mViewPager);
}


public void onClickBtn1(View v){
    int gotoIndex = 0;
    mViewPager.setCurrentItem(gotoIndex, true);
    textView.setText("you're in tab1");
}

public void onClickBtn2(View v){
    int gotoIndex = 1;
    mViewPager.setCurrentItem(gotoIndex, true);
    textView.setText("you're in tab2");
}

public void onClickBtn3(View v){
    int gotoIndex = 2;
    mViewPager.setCurrentItem(gotoIndex, true);
    textView.setText("you're in tab3");
}

public void onClickBtn4(View v){
    Main2Activity.fromActivity("abc");
    Log.i("btn4", "was clicked");
}

//used for when fragment passes data to activity
@Override
public void onDataPass(String data) {
    Log.d("LOG", "passed data: " + data);
}



private void setupViewPager(ViewPager viewPager) {
    SectionsPageAdapter adapter = new SectionsPageAdapter(getSupportFragmentManager());
    adapter.addFragment(new Main2Activity(), "TAB1");
    adapter.addFragment(new Main3Activity(), "TAB2");
    adapter.addFragment(new Main4Activity(), "TAB3");
    viewPager.setAdapter(adapter);
}

谢谢!

1 个答案:

答案 0 :(得分:1)

对于此类任务,您应该使用ViewPager.OnPageChangeListener

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    textView = (TextView) findViewById(R.id.textview);

    mSectionsPageAdapter = new SectionsPageAdapter(getSupportFragmentManager());
    mViewPager = (ViewPager) findViewById(R.id.container);
    mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {
                // Here you get a new position.
                textView.setText("you're in tab" + String.valueOf(position));
            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });
    setupViewPager(mViewPager);
}