gpt4 book ai didi

java - Android Java Activity 显示哪个 Fragment 可见

转载 作者:行者123 更新时间:2023-12-02 12:34:15 24 4
gpt4 key购买 nike

我现在正在学习 Activity 和 fragment 。我有一个简单的应用程序,每当我单击按钮时,它都会更改 fragment View 。我还注意到我可以在不同的 fragment 之间滑动。

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

例如,当我在 Activity 中单击 btn2 时,TextView 将显示“you're in tab2”。当我滑动到下一个 fragment 时,我希望我的 Activity 根据正在查看的 fragment 显示类似“您位于 tab3”的内容。

当用户在 fragment 内提交信息时,我已经使用 OnDataPass 来执行操作。当用户滑动到不同的 fragment 时,我可以通过什么方式传递数据,让 Activity 知道在我的 TextView 中显示什么?或者我会继续使用 OnDataPass 吗?

这是我的 Activity :

@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);
}

谢谢!

最佳答案

对于此类任务,您应该使用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);
}

关于java - Android Java Activity 显示哪个 Fragment 可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45198830/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com