0

我正在学习活动和片段。我有一个简单的应用程序,只要点击一个按钮就可以更改片段视图。我也注意到我可以在不同的片段之间滑动。在我的Activity中,当我点击一个按钮时,我有一个TextView,它将显示我在哪个片段。当我在活动之间滑动时,我还想让Activity的TextView显示我的片段在Android Java活动显示哪个片段可见

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

我已经在使用OnDataPass做用户从Fragment内部提交信息的内容。我可以通过另一种方式将数据从用户滑动到其他片段时传递给活动,以让活动知道在我的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

对于这种类型的任务,你应该使用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); 
}