遇到个难题了,findViewById返回Null。
查网一般原因有几种:
1.findViewById在setContentView(R.layout.main);之前
2.在另一个view的元素应该用view.findViewById来拿
3.clean一下工程,让ID重新生成但是我都试过了问题没有解决。
下面我贴一下代码:
布局xml<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:orientation="vertical">
<ScrollView android:layout_width="fill_parent"
android:layout_height="wrap_content">
<LinearLayout android:gravity="center_vertical"
android:orientation="vertical" android:paddingLeft="12.0dip"
android:paddingRight="12.0dip" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" 
android:textSize="18.0dip" android:textStyle="bold" 
android:layout_marginTop="3.0dip" android:text="@string/keyword" />
<EditText android:id="@id/keywordEditText"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:hint="@string/keyword_hint" />
<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" 
android:textSize="18.0dip" android:textStyle="bold" 
android:layout_marginTop="6.0dip" android:text="@string/scope" />
<Spinner android:id="@id/scopeSpinner" style="@style/filter_spinner" />
<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" 
android:textSize="18.0dip" android:textStyle="bold" 
android:layout_marginTop="6.0dip" android:text="@string/lawno" />
<EditText android:id="@id/lawnoEditText"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:hint="@string/lawno_hint" />
<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" 
android:textSize="18.0dip" android:textStyle="bold" 
android:layout_marginTop="6.0dip" android:text="@string/valid" />
<Spinner android:id="@id/validSpinner" style="@style/filter_spinner" />
<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" 
android:textSize="18.0dip" android:textStyle="bold" 
android:layout_marginTop="6.0dip" android:text="@string/area" />
<Spinner android:id="@id/areaSpinner" style="@style/filter_spinner" />
<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" 
android:textSize="18.0dip" android:textStyle="bold" 
android:layout_marginTop="6.0dip" android:text="@string/category" />
<Spinner android:id="@id/categorySpinner" style="@style/filter_spinner" />
<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" 
android:textSize="18.0dip" android:textStyle="bold" 
android:layout_marginTop="6.0dip" android:text="@string/pubunit" />
<EditText android:id="@id/pubunitEditText"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:hint="@string/pubunit_hint" />
<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" 
android:textSize="18.0dip" android:textStyle="bold" 
android:layout_marginTop="6.0dip" android:text="@string/pubdate" />
<EditText id="@id/pubdateEditText" 
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:hint="@string/pubdate_hint"/>
<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" 
android:textSize="18.0dip" android:textStyle="bold" 
android:layout_marginTop="6.0dip" android:text="@string/pubdateto" />
<EditText id="@id/pubdatetoEditText" 
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:hint="@string/pubdateto_hint"/>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:gravity="center" android:padding="10dip">
<Button android:id="@id/filterSearchBtn" android:layout_height="wrap_content"
android:layout_width="75dip" android:text="@string/search"/>
<Button android:id="@id/filterResetBtn" android:layout_height="wrap_content"
android:layout_width="75dip" android:text="@string/reset"/>
<Button android:id="@id/filterCancelBtn" android:layout_height="wrap_content"
android:layout_width="75dip" android:text="@string/cancel"/>
</LinearLayout>
</LinearLayout>
</ScrollView>
</LinearLayout> 
Activitypublic void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

inflater = LayoutInflater.from(MainActivity.this);
initTitleBar();
initFilterDialog();
initMainList();
}
......
public void initFilterDialog(){
//初始化变量
final View dialogView = inflater.inflate(R.layout.filter, null);
keywordEditText = (EditText) dialogView.findViewById(R.id.keywordEditText);
scopeSpinner = (Spinner) dialogView.findViewById(R.id.scopeSpinner);
lawnoEditText = (EditText) dialogView.findViewById(R.id.lawnoEditText);
validSpinner = (Spinner) dialogView.findViewById(R.id.validSpinner);
areaSpinner = (Spinner) dialogView.findViewById(R.id.areaSpinner);
categorySpinner = (Spinner) dialogView.findViewById(R.id.categorySpinner);
pubunitEditText = (EditText) dialogView.findViewById(R.id.pubunitEditText);
searchButton = (Button) dialogView.findViewById(R.id.filterSearchBtn);
searchButton.setOnClickListener(new OnClickEvent());
resetButton = (Button) dialogView.findViewById(R.id.filterResetBtn);
resetButton.setOnClickListener(new OnClickEvent());
cancelButton = (Button) dialogView.findViewById(R.id.filterCancelBtn);
cancelButton.setOnClickListener(new OnClickEvent());
pubdateEditText = (EditText) dialogView.findViewById(R.id.pubdateEditText);
pubdateEditText.setOnClickListener(new OnClickEvent()); //错误在这!!!
pubdatetoEditText = (EditText) dialogView.findViewById(R.id.pubdatetoEditText);
pubdatetoEditText.setOnClickListener(new OnClickEvent());
final Calendar c = Calendar.getInstance(); 
datePickerDialog = new DatePickerDialog(MainActivity.this,new DatePickerDialog.OnDateSetListener() {
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
datePickerDialogTarget.setText(year+""+monthOfYear+""+dayOfMonth);
}
},c.get(Calendar.YEAR),c.get(Calendar.MONTH),c.get(Calendar.DAY_OF_MONTH));
// datePickerDialog.setButton("设置", null);
        //创建面板
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
        builder.setIcon(R.drawable.m_filter);
builder.setTitle(R.string.filter);
builder.setView(dialogView);
        filterDialog=builder.create();
}————————————————————————————————————————————————
空指针错误发生在pubdateEditText.setOnClickListener(new OnClickEvent());
pubdateEditText为null。
奇怪的是pubdateEditText以上的元素全部拿得到,就是pubdateEditText拿不到。
后来我屏蔽
pubdateEditText = (EditText) dialogView.findViewById(R.id.pubdateEditText);
pubdateEditText.setOnClickListener(new OnClickEvent());
结果pubdatetoEditText.setOnClickListener(new OnClickEvent());的pubdatetoEditText也报空指针。
————————————————————————————————————————————————
这个问题奇怪的地方就是常见的三种问题都被排除,多数元素拿得到只后面这两个拿不到。
大家帮我看看问题出在哪,谢谢!