【发布时间】:2015-01-16 09:59:25
【问题描述】:
我有一个带有选项卡的 ActionBar,它是片段和 ViewPager。 在 MainActivity 中实现了一个 LocationListener。
如何将位置数据从 MainActivity 传递给 Fragment?
主活动:
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()方法中将位置数据写出Tab的代码:
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);
}
}
【问题讨论】:
-
您可以附加一个捆绑包,它将保存您的数据。
-
您遇到了什么问题?在将适配器设置为 ViewPager 后也调用
fragment.setTv(str);。我的东西onPageSelected方法在选择第一个片段时也会被调用,所以在onPageSelected方法中使用fragment.setTv(str); -
是的,但是如果我在 setTv() 方法中执行任何操作,Android 就会崩溃,我不知道为什么
标签: android android-activity android-actionbar location fragment