我正在尝试在vIEwpager的两个片段之间传递字符串,但没有找到正确的方法.
到目前为止,这是我的代码:
public class MyFragmentPagerAdapter extends FragmentPagerAdapter{ final int PAGE_COUNT = 6; /** Constructor of the class */ public MyFragmentPagerAdapter(FragmentManager fm) { super(fm); } /** This method will be invoked when a page is requested to create */ @OverrIDe public Fragment getItem(int arg0) { switch (arg0) { case 0: return new MyFragment(); case 1: return new part2(); case 2: return new Part3(); case 3: return new Part4(); case 4: return new Part5(); case 5: return new Part6(); default: return null; } } /** Returns the number of pages */ @OverrIDe public int getCount() { return PAGE_COUNT; } @OverrIDe public CharSequence getPageTitle(int position) { return "Page #" + ( position + 1 ); }}public class MainActivity extends FragmentActivity { @OverrIDe public voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.activity_main); /** Getting a reference to the VIEwPager defined the layout file */ VIEwPager pager = (VIEwPager) findVIEwByID(R.ID.pager); /** Getting fragment manager */ FragmentManager fm = getSupportFragmentManager(); /** Instantiating FragmentPagerAdapter */ MyFragmentPagerAdapter pagerAdapter = new MyFragmentPagerAdapter(fm); /** Setting the pagerAdapter to the pager object */ pager.setAdapter(pagerAdapter); } @OverrIDe public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); return true; }}
我不在vIEwpager中使用标签.我应该在片段中写些什么?
更新:
我试图实现一个接口,就像答案中建议的那样:
public interface OnTogglePressListener { public voID onTogglepressed(String msg);}
在第一个片段上:
@OverrIDepublic voID onAttach(Activity activity) { // Todo auto-generated method stub try { buttonListener = (OnTogglePressListener) getActivity(); } catch (ClassCastException e) { throw new ClassCastException(activity.toString() + " must implement onTogglepressed"); } super.onAttach(activity); }@OverrIDepublic voID onVIEwCreated(VIEw vIEw, Bundle savedInstanceState) { // Todo auto-generated method stub buttonListener.onTogglepressed("Off");... }
在第二个片段上:
public String getEtat(String etat) { state =etat; return etat; }
在主要活动上:
public voID onTogglepressed(String etat) { Part5 p = (Part5)getSupportFragmentManager().findFragmentByID(R.layout.frag_2); p.getEtat(etat); }
但是我每次都有NullPointerException.
解决方法:
您显然正在使用VIEwPager,并且可以利用它.您可以像这样将标签添加到VIEwPager:
活动:
pager.setTag("some text"); // pager is a VIEwPager object
然后,您可以通过VIEwGroup在如下片段中获取此数据:
分段:
@OverrIDepublic VIEw onCreateVIEw(LayoutInflater inflater, VIEwGroup container, Bundle savedInstanceState) { VIEw vIEw = inflater.inflate(R.layout.fragment_main, container, false); String result = container.getTag().toString(); // do something with the result return vIEw;
您还可以将setTag()设置为片段中的容器.
这是我发现的用于在片段及其母亲活动之间发送数据的最干净的解决方案.另一个解决方案(到目前为止,这里没有提到)是通过SharedPreferences发送数据的,但是我建议尽可能使用标签.
总结以上是内存溢出为你收集整理的android-如何在viewpager中的片段之间传递字符串全部内容,希望文章能够帮你解决android-如何在viewpager中的片段之间传递字符串所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)