新建一个类型为Preference 的XML文件,根元素为PreferenceScreen,里面PreferenceCategory元素下引用一个LinearLayout布局XML文件,布局文件里有一个EditText et在相关的public class mainPreferenceActivity extends PreferenceActivity里面
对该EditText进行引用类里先行申明: private EditText et;
然后在onCreat里: et = (EditText)findViewById(R.id.et);最后在按钮的单击里:String sPhone = et.getText().toString(); 执行这一语句时报:空指针异常,前边一切正常,R文件里也正常生成了该 EditText,请问高手,如何解决这个异常?多谢,另:et.setText("123")语句同样报空指针异常 指针异常布局xml

解决方案 »

  1.   

    补充:在同一个位置的Button都能正常检索出来使用!只有EditText在调用其方法时报空指针异常
      

  2.   


    代码如下:public class mainPreferenceActivity extends PreferenceActivity {
        private Button bt = null;
        private EditText et = null;
         public mainPreferenceActivity() {
    // TODO 自动生成的构造函数存根
    } /* (非 Javadoc)
     * @see android.preference.PreferenceActivity#onCreate(android.os.Bundle)
     */
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    // TODO 自动生成的方法存根
    super.onCreate(savedInstanceState);
    addPreferencesFromResource(R.xml.preferences);
    setContentView(R.layout.setting);
     et = (EditText)findViewById(0x7f090006);
    //判断GPS是否开启,设置全局变量
    public void register(View v){
    String s1 = et.getText().toString();
    }
        }
    }
      

  3.   

     et = (EditText)findViewById(0x7f090006);  0x7f090006是R文件里et对应的值  改成 et = (EditText)findViewById(R.id.et);也是同样报空指针异常
      

  4.   

    setContentView(R.layout.setting);要这句干嘛?布局不是已经在addPreferencesFromResource(R.xml.preferences);里面设置了吗?怎么还有这句?
      

  5.   

    去掉这句:setContentView(R.layout.setting); 也是同样报空指针异常
      

  6.   

    <?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:minHeight="?android:attr/listPreferredItemHeight"
         android:gravity="center_vertical" 
         android:paddingRight="5dp"
         android:paddingLeft="?android:attr/scrollbarSize">
         <RelativeLayout     
             android:layout_width="wrap_content"
             android:layout_height="wrap_content" 
             android:layout_weight="1">
       <TextView android:id="@+android:id/title"
                 android:layout_width="wrap_content" 
                 android:layout_height="wrap_content"
                 android:ellipsize="marquee" 
                  android:singleLine="true" 
                 android:fadingEdge="horizontal"
                 android:layout_alignParentLeft="true"
                 android:layout_centerInParent="true"
                 android:textSize="18dp"
                 android:textColor="#000000"/>
             
        <EditText
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" 
                android:id="@+id/et"
                android:layout_marginLeft="12dip"
                android:layout_alignParentBottom="true"
        
                android:layout_toRightOf="@android:id/title"
            
        
                android:hint="这里输入本机号码"
                android:textSize="16dip"
      
                android:textColor="#FF0000"
                android:focusableInTouchMode="true"
        />
                     
        <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+android:id/bt"
                android:layout_marginLeft="12dip"
                android:layout_alignParentBottom="true"
                android:layout_toRightOf="@id/et2"
                android:textSize="16dip"
                android:textColor="#000000"
                android:shadowColor="#F8F8FF"
                android:onClick="register"
                android:text="用户注册"
                
        />     
          
        
        <TextView android:id="@+android:id/summary"
                 android:layout_width="wrap_content" 
                 android:layout_height="wrap_content"
                 android:ellipsize="marquee" 
                 android:textSize="14dp"
                 android:layout_below="@android:id/title" 
                 android:layout_alignLeft="@android:id/title"
                 android:textColor="#b2aeaf"/>
         </RelativeLayout>
         <!-- Preference should place its actual preference widget here. -->
         <LinearLayout android:id="@+android:id/widget_frame"
             android:layout_width="wrap_content" 
             android:layout_height="fill_parent"
             android:gravity="center_vertical" 
             android:orientation="vertical"/>
        
    </LinearLayout>
      

  7.   

    无语了 这是preference吗?你不会是帖的setting.xml吧
      

  8.   

    你的edittext本来就是空啊,text值没数据...你给et.setText看看
      

  9.   

    这个preference(EditText所在的布局)是嵌套在真正的preference里的,真正的preference并没有贴出来现在我帖前边的一段出来
    <?xml version="1.0" encoding="utf-8"?>
    <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
        <PreferenceCategory 
            android:layout="@layout/preference_category"
            android:title="客户端注册">
            <Preference
                android:title="手机号:"
                android:layout="@layout/preference"
               
                />
    ..........
      

  10.   

    我把xml复制进去还报错了...  android:layout_toRightOf="@id/et2"这个id是没有的  而且LZ的布局混乱
     <TextView android:id="@+android:id/title"
                 android:layout_alignParentLeft="true"
                 android:layout_centerInParent="true"
                 android:textColor="#000000"/>  
        <EditText
                android:layout_alignParentBottom="true"
                android:layout_toRightOf="@android:id/title"
        />
    textview在中间,EditText在底部,toRightOf...
      

  11.   

    我没有贴全,所有XML是没有问题的,界面都正常运行起来了,只是在执行操作的时候报错
      

  12.   

    这里的null主要是getText()返回的,它是null的时候你再调用里面的方法toString()肯定会报错。我目前处理的方法是加 if(xxx.getText() != null),然后再写下面的代码,就可以保证不出错了。
    这里的getText好像跟其他语言的不一样,当Text没有内容的时候不是返回""的指针,而是返回null指针。
      

  13.   

    既然et.setText("123")语句同样报空指针异常,那么应该是得到的et==null,你加log看下得到的et是不是null,如果是null那就要检查一下你的xml
      

  14.   

    哥们你这种问题我也碰到过,我的是这样的,由于要适应不同分辨率所以定义了各种分辨率的layout  layout-1024*600 然后你运行的设备的那个分辨率里面写漏了这个控件 就会出现null pointer
      

  15.   

    好好看看addPreferencesFromResource()方法的使用再写吧
      

  16.   

    既然et.setText("123")语句同样报空指针异常,那么应该是得到的et==null,你加log看下得到的et是不是null,如果是null那就要检查一下你的xml 说得有道理,但XML我实在检查不出有啥问题,另外,楼上说好好看看addPreferencesFromResource()方法的使用再写吧,我用的版本里该方法提示已不建议使用了,不使用addPreferencesFromResource(),又该使用哪个方法呢
      

  17.   


    如果你只是用普通的方式来做,就别用addPreferencesFromResource(),就通过setcontentview来写就是,可定是可以找到view的。
    如果用prefereneceActivity,就需要使用addPreferencesFromResource(),通过它是没法使用findviewbyid的,找到的自然是null。不建议使用但可以使用,最新推荐的PreferenceFragment不知道你是否习惯用它。
      

  18.   


    你的xml是放在layout里面还是layoutXXXX(XXXX表示分辨率之类的)呢?
    会不会如18L所说的,你放的xml的位置不对导致找不到这个控件呢?
      

  19.   

    同一位置的BUTTON控件可以正常使用!!!button的单击事件正常使用!
    好的,我再看看addPreferencesFromResource()方法
      

  20.   

    子视图控件试试在onBindView方法中获取
    你xml布局中button和edittext的id写法不一样,button是不是与android.r中刚好一致了。
      

  21.   

    et和bt如下,在activity中bt可正常使用,e报t空指针<EditText
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" 
                android:id="@+id/et"
                android:layout_marginLeft="12dip"
                android:layout_alignParentBottom="true"
                android:layout_toRightOf="@android:id/title"
                android:hint="这里输入本机号码"
                android:textSize="16dip"
                android:textColor="#FF0000"
                android:focusableInTouchMode="true"
        />
                     
        <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+android:id/bt"
                android:layout_marginLeft="12dip"
                android:layout_alignParentBottom="true"
                android:layout_toRightOf="@id/et2"
                android:textSize="16dip"
                android:textColor="#000000"
                android:shadowColor="#F8F8FF"
                android:onClick="register"
                android:text="用户注册"
                
        />     
      

  22.   

    各位,可能是这样的,这个XML没有用SETCONTENTvIEW方法加入,所以报空指针异常