如何在片段中使用我的edittext?

时间:2013-10-31 10:02:14

标签: java android android-fragments

我希望第二个片段中的editText具有onClickListener用于其他操作,例如对话任务。

但是当setListener上的EditText或按钮上的NullPointerExceptions时,我的程序崩溃了。

例外情况是:public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { Bundle args = getArguments(); int position = args.getInt(ARG_OBJECT); int tabLayout = 0; switch (position) { case 0: tabLayout = R.layout.priority_fields; break; case 1: tabLayout = R.layout.authors_fields; name.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(FILL_PARENT, WRAP_CONTENT); ll.setLayoutParams(params); ll.addView(name); ll.addView(surname); authors.addView(ll); } }); break;
有可能它看不到布局???如果是,为什么?

我有3个标签布局和1个布局,如寻呼机,我在寻呼机的活动中执行此操作。

'name'是我的editText

{{1}}

enter image description here

1 个答案:

答案 0 :(得分:0)

问题是你没有像你那样访问EditText。所以你在这里得到一个NPE,因为应用程序正在查看错误的资源。

我通常在片段中保留对View的引用,所以我总是可以访问正确的小部件:

private View mContentView = null;

public View onCreateView {
    LayoutInflater inflater = getActivity().getLayoutInflater();
    mContentView = inflater.inflate(R.layout.dialog_disclaimer, null);
    builder.setView(mContentView);
}

现在,当我想在片段中的其他地方使用EditText时,可以这样做:

@Override
public void onActivityCreated(Bundle arg0) {
    super.onActivityCreated(arg0);

    bAccept = (Button) mContentView.findViewById(R.id.accept_disclaimer);
    etName = (EditText) mContentView.findViewById(R.id.name);

    bAccept.setOnClickListener(this);
    etName.setOnClickListener(this);
}