onCreateview的片段集值为全局变量返回null值?

时间:2015-10-30 14:11:58

标签: java android android-fragments android-activity

我被困在一个片段中。下面是我的片段代码

public class Tab1 extends Fragment {
    EditText address,contactNumber,dob;
    String adds;

    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

        View v =inflater.inflate(R.layout.tab_1,container,false);

        contactNumber= (EditText)v.findViewById(R.id.editTextcontact);
        address= (EditText)v.findViewById(R.id.editText2);
        dob= (EditText) v.findViewById(R.id.editText3);

        contactNumber.setHint("Your ContactNo Plz");
        address.setHint("Your address Plz");
        dob.setHint("Your Data Of Birth");
//receive data from main activity
        TabedActivity activity = (TabedActivity) getActivity();
        String myDataFromActivity = activity.getMyData();
//
       adds=address.getText().toString();

        return v;
    }

    public String getData(){
      return adds;
    }
}

我想要的是当从主活动中调用此片段时,edittext中的文本应该传递给adds variable.i像上面一样检查它但是它显示了一个空值。我可以设置这个值。请帮助

3 个答案:

答案 0 :(得分:0)

您需要返回address.getText()。toString()并检查null;

示例:

public String getData(){
      if(address != null && address.getText() != null) 
      return address.getText().toString(); 
      return null; // block NPE
    }

答案 1 :(得分:0)

在onCreateView中,您可以:

address= (EditText)v.findViewById(R.id.editText2);

然后在同一事件中你做:

adds=address.getText().toString();

但目前用户尚未设定其值。

那就是说,检查你的活动中的什么时候你想要获得这个值也很重要。

答案 2 :(得分:0)

您应该在创建片段时将所需数据传递给父活动的片段。示例代码如下所示

@activity = Activity.find(params[:activity_id])
event = @activity.events.new(event_params)

现在在你的片段中获取值,如

 Bundle args = new Bundle();
    args.putString("address", address);
    fragment.setArguments(args);

希望它有所帮助。