2015-04-08 3 views
-5

У меня есть два экрана.Android: Исключение Null Pointer в RadioButton

Первый экран: у меня есть одна кнопка добавления и Listview. Прежде всего, когда я нажимаю кнопку «Добавить», она перейдет на второй экран.

Подробнее Экран: Я добавляю сотрудника Детали, такие как Название, Название компании, пол, Опыт, Обозначение работы. После ввода данных нажмите кнопку «Сохранить». Я сохраняю эту информацию в списке массивов.

Ошибка: Метод 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; 
       }  
      } 

ПодробнееScreen.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 
+2

Итак, где ваш код? –

+0

привет Юва, пожалуйста, откройте эту ссылку https://www.codota.com/codebox/#/6ngzv5my11tw3ik9/shared – teju

+0

Вы передаете значение int вместо строки – Aju

ответ

1

Изменить часть кода, где вы называете сеттеры деталь объекта в коде ниже:

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); 
+0

Hi Arlind, i здесь была получена ошибка btnMale = (RadioButton) findViewById (sel); findViewById Невозможно сделать статическую ссылку на нестатический метод findViewById (int) из типа Activity – teju

+0

static RadioButton btnMale; статический RadioButton btnFemale; удалить static из объявлений – Arlind

+0

, когда я удаляю статические btnMale и btnFemale. Показывает «Невозможно сделать статическую ссылку на нестатическое поле btnMale». – teju

Смежные вопросы