开发者社区> 问答> 正文

在Activity中调用Fragment的公有函数,变量为null

Activity代码

                    String phone = ((EditText) findViewById(R.id.phone))
                            .getText().toString();
                    if (phone.isEmpty()) {
                        Toast.makeText(ForgetPsdActivity.this, "请输入手机号码",
                                Toast.LENGTH_LONG).show();
                        break;
                    } else {
                        ForgetPSD2Fragment fragment2 = new ForgetPSD2Fragment();
                        transaction.replace(R.id.fragmentcontainer, fragment2);
                        fragment2.setViewPhone(phone);
                        transaction.addToBackStack(null);
                        step = 2;
                    }

fragment2代码

 public class ForgetPSD2Fragment extends Fragment {
    private View view;
    private TextView txtPhone;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        view = inflater.inflate(R.layout.forgetpsd2, container, false);
        txtPhone = (TextView) view.findViewById(R.id.txtphone);
        return view;
    }

    public void setViewPhone(String phone) {
        if (txtPhone == null) {
            Log.i("debug", phone + "abs");
        }else{
            txtPhone.setText(phone);
        }
    }
}

上边是我写的在Activity与fragment之间通信的例子,但是测试发现在调用fragment2.setViewPhone(phone);的时候,txtPhone为null值,请教一下是为什么,有什么解决办法可以处理这个问题?

展开
收起
爵霸 2016-06-16 08:22:06 2510 0
1 条回答
写回答
取消 提交回答
  • fragment2.setViewPhone(phone);//这时候还没初始化

    Bundle bundle = new Bundle();
    bundle.putString("order", "1111");
    fragment.setArguments(bundle);

    然后在fragment中
    String name = getArguments().getString("order");

    2019-07-17 19:40:10
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载

相关实验场景

更多