EditText.setText()空指针异常

时间:2014-08-21 00:56:24

标签: android nullpointerexception android-edittext

我有这个让我疯狂的NPE,也许这只是“隧道视觉”但我无法解决它。我在一个活动中有一个片段,在活动的onCreate()中我实例化片段。然后,当片段被添加到活动时,我从活动中调用片段方法。代码在

之下
transaction = getFragmentManager().beginTransaction();
transaction.replace(R.id.ActionInputFragment, settingsFragment).addToBackStack(null);
transaction.commit();

if(jsonUserData != null)
  settingsFragment.loadUserData(jsonUserData);

在片段中我有:

@Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        this.ctx = getActivity();

    edtFullName = (EditText) getActivity().findViewById(R.id.edtFullNameSettings);

    edtFullName.addTextChangedListener(new TextWatcher .....);
}

添加textwatcher有效。下面(在同一片段中)是其调用生成错误的方法:

public void loadUserData(JSONObject jsonUserData) {
        String fullName;
        try {
            fullName = String.format("%s %s", jsonUserData.getString("first_name"), jsonUserData.getString("last_name"));
        } catch (JSONException e) {
            fullName = "";
        }
        //if(edtFullName != null)
            this.edtFullName.setText(fullName);

    }

我检查了布局,并且editText id就在那里。

1 个答案:

答案 0 :(得分:2)

问题是this.edtFullName尚未初始化,因为onActivityCreated尚未调用,因此调用edtFullName方法时setText()为空< / p>

您可以在EditText中传递loadUserDataonActivityCreated的引用,而不是{{1}}