조각과 ViewPager 인 탭이있는 ActionBar가 있습니다. MainActivity에는 LocationListener가 구현되어 있습니다.안드로이드는 액티비티의 데이터를 그의 프래그먼트 (viewpager)로 전달합니다.
어떻게 MainActivity에서 위치 데이터를 조각으로 전달할 수 있습니까?
MainActivity :
public class MainActivity extends FragmentActivity implements ActionBar.TabListener, LocationListener{
ActionBar actionbar;
ViewPager viewpager;
FragmentPageAdapter ft;
public String str="STRING";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
viewpager = (ViewPager) findViewById(R.id.pager);
ft = new FragmentPageAdapter(getSupportFragmentManager());
final RunFragment fragment = (RunFragment) ft.getItem(viewpager.getCurrentItem());
fragment.setTv(str);
actionbar = getActionBar();
viewpager.setAdapter(ft);
actionbar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
actionbar.addTab(actionbar.newTab().setText("Run").setTabListener(this));
actionbar.addTab(actionbar.newTab().setText("Map").setTabListener(this));
actionbar.addTab(actionbar.newTab().setText("Statistics").setTabListener(this));
viewpager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageSelected(int arg0) {
actionbar.setSelectedNavigationItem(arg0);
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub
}
@Override
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub
}
});
}
나는 setTv() 메소드에있는 탭의 코드 위치 데이터를 기록 할 :
public class RunFragment extends Fragment {
public TextView tv;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.run_layout, container, false);
tv =(TextView)view.findViewById(R.id.textView1);
});
return view;
}
public void setTv(String string){
tv.setText(string);
}
}
[확인] (http://developer.android.com/training/basics/fragments/communicating.html) – Skynet
데이터를 저장할 번들을 첨부 할 수 있습니다. – EagleEye
어떤 문제가 있습니까? 또한 ViewPager에 어댑터를 설정 한 후에'fragment.setTv (str);'을 호출하십시오. onPageSelected 메소드에서 첫 번째 조각을 선택할 때'onPageSelected' 메서드가 호출되기 때문에'onPageSelected' 메서드에서'fragment.setTv (str);을 사용하십시오 –