Android:RadioButton中的空指针异常

时间:2015-04-08 09:34:57

标签: android

我有两个屏幕。

第一个屏幕:我有一个添加按钮和Listview。首先,当我点击添加按钮时,它将进入第二个屏幕。

详细信息屏幕:我正在添加员工详细信息,例如姓名,公司名称,性别,Exp,工作指定。输入详细信息后,单击保存按钮。我将这些细节存储在数组列表中。

  

错误:类型Details中的方法setGen(String)不适用于参数(int)

MainActivity.class

 public class MainActivity extends ActionBarActivity  { 

            ImageView addImage;
            ListView listView;
            // creating ArrayList 
            ArrayList<Details> listdetails = new ArrayList<Details>();
            // creating ArrayAdapter 
            ArrayAdapter<Details> adapter;
            @Override 
            protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
                listView = (ListView) findViewById(R.id.listView);
                // 
                addImage = (ImageView) findViewById(R.id.addImage);
                addImage.setOnClickListener(new OnClickListener() {
                    @Override 
                    public void onClick(View v) {
                        // TODO Auto-generated method stub 
                        Intent i = new Intent(getApplicationContext(),
                                DetailsScreen.class); 

                        startActivity(i);
                        finish(); 
                    } 
                }); 

                if (listdetails != null) {
                    // ArrayList<Details> listdetails=DetailsScreen.saveDetails(); 
                    adapter = new ArrayAdapter<Details>(this,
                            R.layout.activity_listview, listdetails);
                    listView.setAdapter(adapter);
                    Log.d("Details", "Details screen" + listdetails);
                    // 
                } 
            } 

MyAdapter.class

private class MyAdapter extends ArrayAdapter<Details>
                { 
                    Context context;
                    public MyAdapter(Context context, int resource, List<Details> list1) {
                        super(context, resource, list1);
                        // TODO Auto-generated constructor stub 
                        this.context=context;
                    } 
                    private class ViewHolder { 
                        TextView listName, listCmpny, listDisig;
                    } 
                    @Override 
                    public View getView(int position, View convertView, ViewGroup parent) {
                        ViewHolder holder = null;
                        Details detail=getItem(position);

                            LayoutInflater inflator = (LayoutInflater)context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE); 
                            if (convertView == null) {
                                convertView = inflator.inflate(R.layout.activity_listview, null);
                                holder=new ViewHolder();
                            holder.listName = (TextView) findViewById(R.id.listName);
                            holder.listCmpny = (TextView) findViewById(R.id.listCmpny);
                            holder.listDisig = (TextView) findViewById(R.id.listDesignation);
                            convertView.setTag(holder);
                        } 
                            else 
                                holder = (ViewHolder) convertView.getTag();
                            return convertView;
                }    
            } 

DetailsS​​creen.class

 public class DetailsScreen extends ActionBarActivity implements OnClickListener { 
                static EditText name;
                static EditText cmpny;
                static EditText disig;
                static EditText age;
                static EditText exp;
                Details details;
                int sel;
                Button save;
                static RadioGroup radioGroup;
                static RadioButton btnMale;
                static RadioButton btnFemale;

                static ArrayList<Details> Arraydetails ;
                @Override 
                protected void onCreate(Bundle savedInstanceState) {
                    // TODO Auto-g*emphasized text*enerated method stub 
                    super.onCreate(savedInstanceState);
                    setContentView(R.layout.activity_details);
                    // 
                    // Getting The Details From xml 

                    name = (EditText) findViewById(R.id.editName);
                    cmpny = (EditText) findViewById(R.id.editCmpny);
                    disig = (EditText) findViewById(R.id.editDisignation);
                    age = (EditText) findViewById(R.id.editAge);
                    exp = (EditText) findViewById(R.id.editExp);
                    btnFemale = (RadioButton) findViewById(R.id.female);
                    radioGroup = (RadioGroup) findViewById(R.id.radioGroup);
                     btnMale = (RadioButton) findViewById(sel);
                    save = (Button) findViewById(R.id.save);
                    save.setOnClickListener(this);
                } 


                 public static ArrayList<Details> saveDetails() {
                    // TODO Auto-generated method stub 
                     Arraydetails = new ArrayList<Details>();
                    Details details = new Details();
                    details.setname(name.getText().toString());
                    Arraydetails.add(details);
                    details.setcmpny(cmpny.getText().toString());
                    Arraydetails.add(details);
                    details.setDisig(disig.getText().toString());
                    Arraydetails.add(details);
                    details.setAge(age.getText().toString());
                    Arraydetails.add(details);
                    details.setExp(exp.getText().toString());
                    Arraydetails.add(details);

                    int sel = radioGroup.getCheckedRadioButtonId();

                    details.setGen(btnMale.getText().toString());
                    Arraydetails.add(details);
                    Log.d("Details", "Details screen 1" + details.getname().toString());
                    Log.d("Details", "Details screen 2" + Arraydetails.size());
                    return Arraydetails;


                } 
            @Override 
                public void onClick(View v) {
                    // TODO Auto-generated method stub 

                     saveDetails(); 
                //  saveNonStatic(); 

                    Intent i = new Intent(getApplicationContext(), MainActivity.class);
                    Toast.makeText(getApplicationContext(), "Details added " + details.toString(),
                            Toast.LENGTH_LONG).show();
                    // i.putStringArrayListExtra("Array", details); 

                    startActivity(i);
                    finish(); 
                } 

Details.class

public class Details { 
        private String name;
        private String cmpny;
        private String exp;
        private String disig;
        private String age;
        private String gen;

        public String getname() {
            return name;

        } 

        public String getExp() {
            return exp;
        } 

        public void setExp(String exp) {
            this.exp = exp;
        } 

        public String getDisig() {
            return disig;
        } 

        public void setDisig(String disig) {
            this.disig = disig;
        } 

        public String getAge() {
            return age;
        } 

        public void setAge(String age) {
            this.age = age;
        } 

        public String getGen() {
            return gen;
        } 

        public void setGen(String gen) {
            this.gen = gen;
        } 

        public void setname(String name) {
            this.name = name;
        } 

        public String getcmpny() {
            return cmpny;
        } 

        public void setcmpny(String cmpny) {
            this.cmpny = cmpny;
        } 
    } 

Logcat:

    04-08 02:30:12.454: E/AndroidRuntime(1112): FATAL EXCEPTION: main
04-08 02:30:12.454: E/AndroidRuntime(1112): Process: com.example.detailswithsave, PID: 1112
04-08 02:30:12.454: E/AndroidRuntime(1112): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.detailswithsave/com.example.detailswithsave.MainActivity}: java.lang.NullPointerException
04-08 02:30:12.454: E/AndroidRuntime(1112):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
04-08 02:30:12.454: E/AndroidRuntime(1112):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
04-08 02:30:12.454: E/AndroidRuntime(1112):     at android.app.ActivityThread.access$800(ActivityThread.java:135)
04-08 02:30:12.454: E/AndroidRuntime(1112):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
04-08 02:30:12.454: E/AndroidRuntime(1112):     at android.os.Handler.dispatchMessage(Handler.java:102)
04-08 02:30:12.454: E/AndroidRuntime(1112):     at android.os.Looper.loop(Looper.java:136)
04-08 02:30:12.454: E/AndroidRuntime(1112):     at android.app.ActivityThread.main(ActivityThread.java:5017)
04-08 02:30:12.454: E/AndroidRuntime(1112):     at java.lang.reflect.Method.invokeNative(Native Method)
04-08 02:30:12.454: E/AndroidRuntime(1112):     at java.lang.reflect.Method.invoke(Method.java:515)
04-08 02:30:12.454: E/AndroidRuntime(1112):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
04-08 02:30:12.454: E/AndroidRuntime(1112):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
04-08 02:30:12.454: E/AndroidRuntime(1112):     at dalvik.system.NativeStart.main(Native Method)
04-08 02:30:12.454: E/AndroidRuntime(1112): Caused by: java.lang.NullPointerException
04-08 02:30:12.454: E/AndroidRuntime(1112):     at com.example.detailswithsave.DetailsScreen.saveDetails(DetailsScreen.java:69)
04-08 02:30:12.454: E/AndroidRuntime(1112):     at com.example.detailswithsave.MainActivity.onCreate(MainActivity.java:55)
04-08 02:30:12.454: E/AndroidRuntime(1112):     at android.app.Activity.performCreate(Activity.java:5231)
04-08 02:30:12.454: E/AndroidRuntime(1112):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
04-08 02:30:12.454: E/AndroidRuntime(1112):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
04-08 02:30:12.454: E/AndroidRuntime(1112):     ... 11 more

1 个答案:

答案 0 :(得分:1)

将您调用detail对象的setter的代码部分更改为以下代码:

Details details = new Details();
details.setname(name.getText().toString());
details.setcmpny(cmpny.getText().toString());
details.setDisig(disig.getText().toString());
details.setAge(age.getText().toString());
details.setExp(exp.getText().toString());
int sel = radioGroup.getCheckedRadioButtonId();
btnMale = (RadioButton) findViewById(sel);
String gen = btnMale.getText().toString();
details.setGen(gen);
Arraydetails.add(details);