2015-10-18 56 views
0

有人可以帮我检查有什么错我的代码调用虚拟方法java.lang.String中java.lang.Object.toString()“?我有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显示java.lang.NullPointerException:尝试在空对象引用

我已经检查每一个步骤,但仍无法找出问题。

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

@Tunaki不,我的问题是不同的......,答案不能解决我的问题... – Hoo

+0

任何人都可以帮我解决我的问题? – Hoo

+0

@Tunaki,因为你把我的问题标为重复,我相信你能解决我的问题吗? :) – Hoo

回答

2

addProject一项所述的参数*方法是null。正如你可以在片段从ArrayAdapter.createViewFromResource看到:

T item = getItem(position); 
if (item instanceof CharSequence) { 
    text.setText((CharSequence)item); 
} else { 
    text.setText(item.toString()); 
} 

...在检查instanceof Charsequence,它返回false,如果T是不是CharSequence或者T为null。由于您的适配器是String类型,我们可以排除第一种情况。所以你的集合中的一个String是null。

+0

我怎样才能解决这个问题? – Hoo

+0

在将某些内容添加到列表之前,对空值进行快速和脏修复检查。但我强烈建议您重新审视\您的逻辑,避免重复代码片段。 – Blackbelt

+0

我有两个活动,一个具有微调叫做天气和其他活动4微调命名project1,2,3,和4 ...当我找回它们了,在天气微调的项目可以被检索,但4微调给予我NPE错误... – Hoo

相关问题