无法实现活动组件信息Java.lang.nullpointer异常

时间:2015-05-05 03:01:23

标签: android nullpointerexception

之前已经问过这个问题,我尝试了所有解决方案,但仍然没有用。我是android新手,可以犯愚蠢的错误。在我的java文件中,当我尝试查找控件(Edittext)时,它给了我nullpointer异常。 布局xml文件如下:

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

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="@drawable/floorwood" >


    <ScrollView android:layout_height="fill_parent"
        android:layout_width="fill_parent">
    <LinearLayout android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:orientation="vertical">

      <View
         android:layout_width="fill_parent"
         android:layout_height="4dp"
         android:background="#c0c0c0"/>

       <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:ems="20"
        android:textSize="15dp"
        android:textColor="#ffcc33"
        android:background="@null"
        android:text="Deduction" />


      <View
         android:layout_width="fill_parent"
         android:layout_height="4dp"
         android:background="#c0c0c0"/>


 <TextView 
        android:id="@+id/lbl1"
        android:layout_height="20dp"
        android:layout_width="wrap_content"
        android:ems="20"
        android:textSize="15dp"
        android:textColor="#FFF"
        android:background="@null"
        android:text="Actual House Rent Paid" ></TextView>

    <EditText
        android:id="@+id/hrp"
         android:layout_width="wrap_content" 
         android:layout_height="20dp" 
         android:ems="10"
         android:layout_gravity="right"
         android:padding="2dp"
         android:background="@null"
         android:textSize="15dp"
         android:textColor="#FFF"
         android:inputType="number"
         android:paddingLeft="30dp"
         android:text="0"/>


 <TextView 
        android:id="@+id/lbl1"
        android:layout_height="20dp"
        android:layout_width="wrap_content"
        android:ems="20"
        android:textSize="15dp"
        android:textColor="#FFF"
        android:background="@null"
        android:text="HRA given by the employee" ></TextView>

      <EditText
        android:id="@+id/hraemp" 
         android:layout_width="wrap_content" 
         android:layout_height="20dp" 
         android:ems="10"
         android:layout_gravity="right"
         android:padding="2dp"
         android:background="@null"
         android:textSize="15dp"
         android:textColor="#FFF"
         android:inputType="number"
         android:paddingLeft="30dp"/>

    <View
         android:layout_width="fill_parent"
         android:layout_height="2dp"
         android:background="#c0c0c0"/>




 <TextView 
        android:id="@+id/lbl1"
        android:layout_height="20dp"
        android:layout_width="wrap_content"
        android:ems="20"
        android:textSize="15dp"
        android:textColor="#FFF"
        android:background="@null"
        android:text="80C Deduction" />


   <EditText
        android:id="@+id/dedu_80c"
         android:layout_width="wrap_content" 
         android:layout_height="20dp" 
         android:ems="10"
         android:layout_gravity="right"
         android:padding="2dp"
         android:background="@null"
         android:textSize="15dp"
         android:textColor="#FFF"
         android:inputType="number"
         android:paddingLeft="30dp"/>



 <TextView 
        android:id="@+id/lbl1"
        android:layout_height="20dp"
        android:layout_width="wrap_content"
        android:ems="20"
        android:textSize="15dp"
        android:textColor="#FFF"
        android:background="@null"
        android:text="Home Loan Interest" />


    <EditText
        android:id="@+id/homeloaninterest"
         android:layout_width="wrap_content" 
         android:layout_height="20dp" 
         android:ems="10"
         android:layout_gravity="right"
         android:padding="2dp"
         android:background="@null"
         android:textSize="15dp"
         android:textColor="#FFF"
         android:inputType="number"
         android:paddingLeft="30dp"/>



     <View
         android:layout_width="fill_parent"
         android:layout_height="2dp"
         android:background="#c0c0c0"/>



 <TextView 
        android:id="@+id/lbl1"
        android:layout_height="20dp"
        android:layout_width="wrap_content"
        android:ems="20"
        android:textSize="15dp"
        android:textColor="#FFF"
        android:background="@null"
        android:text="Medical Insurance(self)" />


    <EditText
        android:id="@+id/medi_ins_self"
         android:layout_width="wrap_content" 
         android:layout_height="20dp" 
         android:ems="10"
         android:layout_gravity="right"
         android:padding="2dp"
         android:background="@null"
         android:textSize="15dp"
         android:textColor="#FFF"
         android:inputType="number"
         android:paddingLeft="30dp"/>





 <TextView 
        android:id="@+id/lbl1"
        android:layout_height="20dp"
        android:layout_width="wrap_content"
        android:ems="20"
        android:textSize="15dp"
        android:textColor="#FFF"
        android:background="@null"
        android:text="Medical Insurance(Dependents)" />

     <EditText
        android:id="@+id/medi_ins_depe"
         android:layout_width="wrap_content" 
         android:layout_height="20dp" 
         android:ems="10"
         android:layout_gravity="right"
         android:padding="2dp"
         android:background="@null"
         android:textSize="15dp"
         android:textColor="#FFF"
         android:inputType="number"
         android:paddingLeft="30dp"/>

     <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:ems="20"
        android:textSize="15dp"
        android:textColor="#FFF"
        android:background="@null"
        android:text="Dependents Age" />


    <RadioGroup
        android:id="@+id/radioGroup1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:ems="20"
        android:textSize="15dp"
        android:textColor="#FFF" >

        <RadioButton
            android:id="@+id/radiobtndepen1"
            android:layout_width="wrap_content"
            android:layout_height="30dp"
            android:ems="15"
            android:padding="2dp"
            android:background="@null"
            android:textSize="15dp"
            android:checked="true"
            android:text="[1-59]" />

        <RadioButton
            android:id="@+id/radiobtndepen2"
            android:layout_width="wrap_content"
            android:layout_height="30dp"
            android:ems="15"
            android:padding="2dp"
            android:background="@null"
            android:textSize="15dp"
            android:checked="true"
            android:text="[>59]" />
        </RadioGroup>


      <View
         android:layout_width="fill_parent"
         android:layout_height="2dp"
         android:background="#c0c0c0"/>


 <TextView 
        android:id="@+id/lbl1"
        android:layout_height="20dp"
        android:layout_width="wrap_content"
        android:ems="20"
        android:textSize="15dp"
        android:textColor="#FFF"
        android:background="@null"
        android:text="Medical Reimbursement" />

        <EditText
        android:id="@+id/medi_reim"
         android:layout_width="wrap_content" 
         android:layout_height="20dp" 
         android:ems="10"
         android:layout_gravity="right"
         android:padding="2dp"
         android:background="@null"
         android:textSize="15dp"
         android:textColor="#FFF"
         android:inputType="number"
         android:paddingLeft="30dp"/>



 <TextView 
        android:id="@+id/lbl1"
        android:layout_height="20dp"
        android:layout_width="wrap_content"
        android:ems="20"
        android:textSize="15dp"
        android:textColor="#FFF"
        android:background="@null"
        android:text="Conveyance Allowance" />

        <EditText
        android:id="@+id/conv_allo"
         android:layout_width="wrap_content" 
         android:layout_height="20dp" 
         android:ems="10"
         android:layout_gravity="right"
         android:padding="2dp"
         android:background="@null"
         android:textSize="15dp"
         android:textColor="#FFF"
         android:inputType="number"
         android:paddingLeft="30dp"/>



 <TextView 
        android:id="@+id/lbl1"
        android:layout_height="20dp"
        android:layout_width="wrap_content"
        android:ems="20"
        android:textSize="15dp"
        android:textColor="#FFF"
        android:background="@null"
        android:text="Professional Tax" />

        <EditText
         android:id="@+id/prof_tax"
         android:layout_width="wrap_content" 
         android:layout_height="20dp" 
         android:ems="10"
         android:layout_gravity="right"
         android:padding="2dp"
         android:background="@null"
         android:textSize="15dp"
         android:textColor="#FFF"
         android:inputType="number"
         android:paddingLeft="30dp"/>


     <View
         android:layout_width="fill_parent"
         android:layout_height="2dp"
         android:background="#c0c0c0"/>

     </LinearLayout>
     </ScrollView>


</LinearLayout>

Java代码如下:

   public class Deduction extends Activity {

    /** Called when the activity is first created. */
    EditText hrp;
      @Override
      public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.deduction);
          hrp = (EditText) findViewById(R.id.hrp);
        }

        String shrp=hrp.getText().toString();
}

我无法识别错误,为什么它会给出NullPointerException

2 个答案:

答案 0 :(得分:2)

通过缩进代码以匹配括号来找到答案:

public class Deduction extends Activity {

    /** Called when the activity is first created. */
    EditText hrp;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.deduction);
        hrp = (EditText) findViewById(R.id.hrp);
    }

    String shrp=hrp.getText().toString();
}

然后我们可以注意到您尝试在任何方法之外使用hrp EditText,也就是说之前已经在onCreate()中赋值。< / p>

将此代码移动到onCreate()或随后调用的生命周期或UI方法,例如:

public class Deduction extends Activity {

    String shrp; //careful, this will be null until assigned!

    /** Called when the activity is first created. */
    EditText hrp;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.deduction);
        hrp = (EditText) findViewById(R.id.hrp);

        shrp=hrp.getText().toString();
    }
}

当然,如果您在布局中没有带有该标识的编辑文本,它仍然会尝试使用NPE - 在这种情况下,请检查并确保您设置布局xml发布为您的内容视图,并且自您上次编辑它以来,您已完成了全部清理和重新构建。

答案 1 :(得分:0)

尝试在特定侦听器上获取EditText值,在布局中添加一个按钮,然后使用以下代码:

    public class Deduction extends Activity {

        String shrp; 
        EditText hrp;
        Button btnGetValue;

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.deduction);
            hrp = (EditText) findViewById(R.id.hrp);
            btnGetValue= (Button) findViewById(R.id.btnGetValue);

           btnGetValue.setOnClickListener(new View.OnClickListener() {
                    public void onClick(View v) {
                        // Perform action on click   
                     shrp=hrp.getText().toString();
                    }
                });
        }
    }