java.lang.NullPointerException:尝试在空对象引用上调用虚方法'java.lang.String java.lang.Object.toString()'

时间:2015-10-18 15:15:48

标签: java android sqlite spinner

有人可以帮我查一下我的代码有什么问题吗?我有4个spinner,其值已插入SQLite。现在我想将项目检索到另一个位于Update.java但得到java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.Object.toString()' on a null object reference

我已检查过每一步,但仍无法解决问题。

Update.java

 public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        dbHelper = new MyDatabaseHelper(this);
        setContentView(R.layout.updatepage);
        final String name = getIntent().getExtras().getString("name1");
        final String date=getIntent().getExtras().getString("date1");
        final String ID = getIntent().getExtras().getString("ID");
        RetrievePage(name,date,ID);
    }

     public void addProject1(String c)
        {
            project1=(Spinner)findViewById(R.id.spinner8);
            String[] arr = new String[]{"Pro-XXX-XXX","TRN-XXX-XXX","SRV-XXX-XXX","PRO-REE-BERGARDING","PRO-SKM-SSS","PRO-SKM-DI","PRO-SKM-PACKING","PRO-SIE-AVAGO_S110",
            "PRO-SIE-BIOCON","PRO-BCM-T13/T17","TRIN-IN_HOUSE","TRIN-EXTERNAL","SRIV-SIE-LEMONGRASS","SRV-PW-SIMOCODE","SRV-REE-SIMOCODE","PRO-SKM-D5","PRO-SKM-DRIOU","PRO-BKI-DESMET",
            "PRO-BKI-INFINEON","PRO-INH-ANDROID","PRO-BCM-S120","PRO-GAW-OP"};
            List<String> list = new ArrayList<String>();
            String project11 = c;
            list.add(project11);
            for(String s:arr){
                if(!list.contains(s)){
                    list.add(s);
                }
            }
            ArrayAdapter<String> adapter = new ArrayAdapter<String>(UpdatePage.this, android.R.layout.simple_spinner_dropdown_item, list);
            adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            project1.setAdapter(adapter);
        }

        public void addProject2(String d)
        {
            project2=(Spinner)findViewById(R.id.spinner9);
            String[] arr = new String[]{"Pro-XXX-XXX","TRN-XXX-XXX","SRV-XXX-XXX","PRO-REE-BERGARDING","PRO-SKM-SSS","PRO-SKM-DI","PRO-SKM-PACKING","PRO-SIE-AVAGO_S110",
                    "PRO-SIE-BIOCON","PRO-BCM-T13/T17","TRIN-IN_HOUSE","TRIN-EXTERNAL","SRIV-SIE-LEMONGRASS","SRV-PW-SIMOCODE","SRV-REE-SIMOCODE","PRO-SKM-D5","PRO-SKM-DRIOU","PRO-BKI-DESMET",
                    "PRO-BKI-INFINEON","PRO-INH-ANDROID","PRO-BCM-S120","PRO-GAW-OP"};
            List<String> list = new ArrayList<String>();
            String project22 = d;
            list.add(project22);
            for(String s:arr){
                if(!list.contains(s)){
                    list.add(s);
                }
            }
            ArrayAdapter<String> adapter = new ArrayAdapter<String>(UpdatePage.this, android.R.layout.simple_spinner_dropdown_item, list);
            adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            project2.setAdapter(adapter);
        }

        public void addProject3(String e)
        {
            project3=(Spinner)findViewById(R.id.spinner13);
            String[] arr = new String[]{"Pro-XXX-XXX","TRN-XXX-XXX","SRV-XXX-XXX","PRO-REE-BERGARDING","PRO-SKM-SSS","PRO-SKM-DI","PRO-SKM-PACKING","PRO-SIE-AVAGO_S110",
                    "PRO-SIE-BIOCON","PRO-BCM-T13/T17","TRIN-IN_HOUSE","TRIN-EXTERNAL","SRIV-SIE-LEMONGRASS","SRV-PW-SIMOCODE","SRV-REE-SIMOCODE","PRO-SKM-D5","PRO-SKM-DRIOU","PRO-BKI-DESMET",
                    "PRO-BKI-INFINEON","PRO-INH-ANDROID","PRO-BCM-S120","PRO-GAW-OP"};
            List<String> list = new ArrayList<String>();
            String project33 = e;
            list.add(project33);
            for(String s:arr){
                if(!list.contains(s)){
                    list.add(s);
                }
            }
            ArrayAdapter<String> adapter = new ArrayAdapter<String>(UpdatePage.this, android.R.layout.simple_spinner_dropdown_item, list);
            adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            project3.setAdapter(adapter);
        }

        public void addProject4(String f)
        {
            project4=(Spinner)findViewById(R.id.spinner14);
            String[] arr = new String[]{"Pro-XXX-XXX","TRN-XXX-XXX","SRV-XXX-XXX","PRO-REE-BERGARDING","PRO-SKM-SSS","PRO-SKM-DI","PRO-SKM-PACKING","PRO-SIE-AVAGO_S110",
                    "PRO-SIE-BIOCON","PRO-BCM-T13/T17","TRIN-IN_HOUSE","TRIN-EXTERNAL","SRIV-SIE-LEMONGRASS","SRV-PW-SIMOCODE","SRV-REE-SIMOCODE","PRO-SKM-D5","PRO-SKM-DRIOU","PRO-BKI-DESMET",
                    "PRO-BKI-INFINEON","PRO-INH-ANDROID","PRO-BCM-S120","PRO-GAW-OP"};
            List<String> list = new ArrayList<String>();
            String project44 = f;
            list.add(project44);
            for(String s:arr){
                if(!list.contains(s)){
                    list.add(s);
                }
            }
            ArrayAdapter<String> adapter = new ArrayAdapter<String>(UpdatePage.this, android.R.layout.simple_spinner_dropdown_item, list);
            adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            project4.setAdapter(adapter);
        }


        public void RetrievePage(String name,String date, String id) {
            final String name2 = name;
            final String date2=date;
            final String id2 = id;
            final EditText name3 = (EditText) findViewById(R.id.editText9);
            final EditText date3 = (EditText) findViewById(R.id.editText12);

            final EditText per1=(EditText) findViewById(R.id.editText20);
            final EditText per2=(EditText) findViewById(R.id.editText24);
            final EditText per3=(EditText) findViewById(R.id.editText28);
            final EditText per4=(EditText) findViewById(R.id.editText32);

            database = dbHelper.getWritableDatabase();
            c = database.rawQuery("SELECT i.Weather, i.Status,w.Subcontractors, w.NumberOfPerson, w.NumberOfHours, wd.Project, wd.WorkDescription, wd.Per, wd.TimeIn, wd.TimeOut FROM Information i LEFT JOIN WorkForce w ON w.TInfo_id = i._id LEFT JOIN WorkDetails wd ON wd.Twf_id=w._id WHERE i.Name = ? AND i._id= ? ",
                    new String[]{String.valueOf(name2),String.valueOf(id2)}, null);

                if (c != null) {
                    while (c.moveToNext()) {

                        Details WD = new Details();


                   String
     Weather = c.getString(c.getColumnIndexOrThrow(MyDatabaseHelper.Weather));

                           String Project11=c.getString(c.getColumnIndexOrThrow(MyDatabaseHelper.Project));
                           String Project22=c.getString(c.getColumnIndexOrThrow(MyDatabaseHelper.Project));
                           String 

Project33=c.getString(c.getColumnIndexOrThrow(MyDatabaseHelper.Project));
                        String Project44=c.getString(c.getColumnIndexOrThrow(MyDatabaseHelper.Project));
                        String Per1=c.getString(c.getColumnIndexOrThrow(MyDatabaseHelper.Per));
                        String Per2=c.getString(c.getColumnIndexOrThrow(MyDatabaseHelper.Per));
                        String Per3=c.getString(c.getColumnIndexOrThrow(MyDatabaseHelper.Per));
                        String Per4=c.getString(c.getColumnIndexOrThrow(MyDatabaseHelper.Per));
                        addProject1(Project11);
                        addProject2(Project22);
                        addProject3(Project33);
                       addProject4(Project44);
                       addWeather(Weather);

                        WD.setProject(Project11);
                        WD.setProject(Project22);
                        WD.setProject(Project33);
                        WD.setProject(Project44);
                        WD.setPer(Per1);
                        WD.setPer(Per2);
                        WD.setPer(Per3);
                        WD.setPer(Per4);
                        per1.setText(Per1);
                        per2.setText(Per2);
                        per3.setText(Per3);
                        per4.setText(Per4);

                    }

                }
                c.close();


            }

错误LogCat

  Process: com.example.project.project, PID: 2364
    java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.Object.toString()' on a null object reference
            at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:401)
            at android.widget.ArrayAdapter.getView(ArrayAdapter.java:369)
            at android.widget.AbsSpinner.onMeasure(AbsSpinner.java:194)
            at android.widget.Spinner.onMeasure(Spinner.java:580)
            at android.support.v7.widget.AppCompatSpinner.onMeasure(AppCompatSpinner.java:410)
            at android.view.View.measure(View.java:18788)
            at android.view.ViewGroup.measureChild(ViewGroup.java:5922)
            at android.view.ViewGroup.measureChildren(ViewGroup.java:5899)
            at android.widget.AbsoluteLayout.onMeasure(AbsoluteLayout.java:66)

我有一个活动有一个微调器,下面的代码对我来说很好。

public void addWeather(String a) {
    weather3 = (Spinner) findViewById(R.id.spinner5);
    String[] arr = new String[]{"Sunny","Cloudy","Rainy","Thunderstorm"};
    List<String> list = new ArrayList<String>();
    String weather = a;
    list.add(weather);
    for(String s:arr){
        if(!list.contains(s)){
            list.add(s);
        }
    }
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(UpdatePage.this, android.R.layout.simple_spinner_dropdown_item, list);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    weather3.setAdapter(adapter);
}

1 个答案:

答案 0 :(得分:2)

class address(ModelForm): state = forms.ModelChoiceField(queryset = STATES.objects.all()) CITY = forms.ModelChoiceField(queryset = CITIES.objects.all()) class Meta: model = REGIONS fields = ('state', 'CITY',) *方法之一中的参数为addProject。正如您在null的代码段中看到的那样:

ArrayAdapter.createViewFromResource

...检查T item = getItem(position); if (item instanceof CharSequence) { text.setText((CharSequence)item); } else { text.setText(item.toString()); } ,如果T不是instanceof CharsequenceCharSequence为空,则返回false。由于您的适配器属于T类型,因此我们可以排除第一种情况。因此,集合中的一个String为null。