【问题标题】:Android Java Activity displays which Fragment is visibleAndroid Java Activity 显示哪个 Fragment 可见
【发布时间】:2017-07-19 18:53:00
【问题描述】:

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

在我的 Activity 中,当我点击一个按钮时,我有一个 TextView 将显示我所在的 Fragment。当我在 Activity 之间滑动时,我还希望 Activity 的 TextView 显示我所在的 Fragment .

例如,当我在我的 Activity 中单击 btn2 时,TextView 将显示“你在 tab2 中”。当我滑动到下一个片段时,我希望我的 Activity 根据正在查看的片段显示类似“你在 tab3 中”的内容。

当用户在 Fragment 中提交信息时,我已经在使用 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);
}

谢谢!

【问题讨论】:

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


    【解决方案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);
    }
    

    【讨论】:

      猜你喜欢
      • 2015-01-15
      • 1970-01-01
      • 2021-02-16
      • 1970-01-01
      • 2012-10-12
      • 1970-01-01
      • 2013-09-28
      • 2011-07-08
      • 1970-01-01
      相关资源
      最近更新 更多