新建一个类型为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
对该EditText进行引用类里先行申明: private EditText et;
然后在onCreat里: et = (EditText)findViewById(R.id.et);最后在按钮的单击里:String sPhone = et.getText().toString(); 执行这一语句时报:空指针异常,前边一切正常,R文件里也正常生成了该 EditText,请问高手,如何解决这个异常?多谢,另:et.setText("123")语句同样报空指针异常 指针异常布局xml
代码如下: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();
}
}
}
<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>
<?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"
/>
..........
<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...
这里的getText好像跟其他语言的不一样,当Text没有内容的时候不是返回""的指针,而是返回null指针。
如果你只是用普通的方式来做,就别用addPreferencesFromResource(),就通过setcontentview来写就是,可定是可以找到view的。
如果用prefereneceActivity,就需要使用addPreferencesFromResource(),通过它是没法使用findviewbyid的,找到的自然是null。不建议使用但可以使用,最新推荐的PreferenceFragment不知道你是否习惯用它。
你的xml是放在layout里面还是layoutXXXX(XXXX表示分辨率之类的)呢?
会不会如18L所说的,你放的xml的位置不对导致找不到这个控件呢?
好的,我再看看addPreferencesFromResource()方法
你xml布局中button和edittext的id写法不一样,button是不是与android.r中刚好一致了。
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="用户注册"
/>