我希望第二个片段中的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}}
答案 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);
}