Jason_White 2015-06-29 18:41 采纳率: 60%
浏览 6483
已采纳

在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值,请教一下是为什么,有什么解决办法可以处理这个问题?

展开全部

  • 写回答

2条回答 默认 最新

  • danielinbiti 2015-06-29 18:45
    关注
     fragment2.setViewPhone(phone);//这时候还没初始化
     用
     Bundle bundle = new Bundle();
    bundle.putString("order", "1111");
    fragment.setArguments(bundle);
    
    然后在fragment中
    String name = getArguments().getString("order");
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)
编辑
预览

报告相同问题?