findViewById()的麻烦...当我认为不应该时返回NULL

时间:2011-10-16 01:11:48

标签: android

这是一个Android资源文件:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="fill_parent" 
    android:layout_width="fill_parent"
android:paddingLeft="20dip"
android:paddingRight="20dip" android:orientation="vertical">

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="left"
        android:id="@+id/pt_name_view"/>

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="left"
    android:id="@+id/pt_dob_view"/>

   <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="left"
    android:id="@+id/pt_mrun_view"/>

</LinearLayout> 

这是Android应用程序中的相应类:

public class PatientViewActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    setContentView(R.layout.patient_view);

        // ... some irrelevant code ... 

        final TextView nameView = (TextView) findViewById(R.id.pt_name_view);
        nameView.setText(pt.getSurname().toUpperCase() + ", " + pt.getGivenNames() );

        // ... some more irrelevant code ...

}

此代码直到最近才运行良好。现在,尽管两个文件都没有被更改,但是当代码运行时,nameView仍然是NULL。

1 个答案:

答案 0 :(得分:1)

每当你对资源做一点改动(甚至添加一个空格,一个角色,移动文件,添加文件......)时,你的项目编译有时会变得流氓。

请记住,没有什么是完美的,并且有良好的实践。你已经吸取了教训:always save & clean project before running