Android 如何在viewpager中的片段之间传递字符串
我试图在viewpager中的两个片段之间传递字符串,但没有找到正确的方法。 以下是我目前的代码:Android 如何在viewpager中的片段之间传递字符串,android,android-fragments,android-viewpager,Android,Android Fragments,Android Viewpager,我试图在viewpager中的两个片段之间传递字符串,但没有找到正确的方法。 以下是我目前的代码: public class MyFragmentPagerAdapter extends FragmentPagerAdapter{ final int PAGE_COUNT = 6; /** Constructor of the class */ public MyFragmentPagerAdapter(FragmentManager fm) { su
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);
}
关于第一个片段:
@Override
public 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);
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
// TODO Auto-generated method stub
buttonListener.onTogglePressed("Off");
... }
public String getEtat(String etat)
{ state =etat;
return etat;
}
关于第二个片段:
@Override
public 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);
}
@Override
public 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添加标记,如下所示: 活动: 然后,您可以通过ViewGroup在如下片段中获取此数据: 片段: 您还可以将标签设置为片段中的容器
这是我发现的在片段及其母活动之间发送数据的最干净的解决方案。到目前为止,这里没有提到的另一个解决方案是通过SharedReference发送数据,但如果可能,我建议使用标记。您显然在使用ViewPager,您可以利用它。您可以向ViewPager添加标记,如下所示: 活动: 然后,您可以通过ViewGroup在如下片段中获取此数据: 片段: 您还可以将标签设置为片段中的容器
这是我发现的在片段及其母活动之间发送数据的最干净的解决方案。到目前为止,这里没有提到的另一个解决方案是通过SharedReference发送数据,但我建议尽可能使用标记。您是否初始化了接口?尝试从接口创建对象,然后在onActivityCreated回调函数上实例化接口对象,如:InterfaceInstance=onTogglePressListenergetActivity;你初始化界面了吗?尝试从接口创建对象,然后在onActivityCreated回调函数上实例化接口对象,如:InterfaceInstance=onTogglePressListenergetActivity;它可以工作,但不是最好的方法,这个解决方案在ViewPager上不起作用!糟糕的答案,考虑修改和更改所选的答案,但这不是最好的办法,这个解决方案在VIEWPGER上无效!可怕的答案,考虑修改和更改所选答案