activity向fragment传值,可以这样做:在activity中写 one.setArguments(bundle);其中one是fragment对象,在接受值得fragment中写
Bundle bundle = getActivity()
.getSupportFragmentManager()
.findFragmentByTag(
"android:switcher:" + R.id.noticepager + ":" + 0)
.getArguments();
这句话表示取得viewpager第一页的fragment传来的值。
易犯错误提示: ①发送值的fragment和装入集合中的fragment不是一个同一个fragment对象。这样会产生fragment is already active的错误。
②发送值得时候给fragment添加了标签Tag,例如: f.setArguments(bundle);
fm.beginTransaction().add(one, "179521" ).commit();
这样会产生unable change fragment's Tag的错误。
fragment向activity传值可以这样做:首先在fragment中写一个接口,示例:
public interface sendjudge {
public void sendmessage(int level); //level是要传的值
}
然后再 重写onAttach()
@Override
public void onAttach(Activity activity) {
// TODO Auto-generated method stub
super.onAttach(activity);
try {
listen = (sendjudge) activity;//这里listen是声明的接口变量
} catch (ClassCastException e) {
// TODO: handle exception
throw new ClassCastException(getActivity().getClass().getName()
+ " must implements interface MyListener");
}
}
然后再需要传递值得地方调用接口里面的方法,示例:
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
context = getActivity();
listen.sendmessage(1);//调用接口中的方法
}
然后再activity中实现这个接口并重写接口里面的方法,示例:
@Override
public void sendmessage(int level) {
// TODO Auto-generated method stub
System.out.println("levellevellevellevel" + level);
if (level == 1) {
two.setArguments(bundle);
} else {
System.out.println("nnonoononononono");
}
}
这样就完成了。
本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。