将 4 个微调器项目读取到另一个 4 个微调器

Read 4 spinner item to another 4 spinner

有人可以帮我检查一下我的代码有什么问题吗?我在 WorkDetails 中有 4 个 spinner,名称为 spinner1,2,3 and 4,它们的值已插入到 SQLite。现在我想显示在 spinner1,2,3,4 中选择的项目project1,project2,project3,project4 微调器但未能这样做。

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

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)

我有一个 activity,它有一个微调器,下面的代码对我来说工作正常。

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

由于异常似乎发生在您的代码之外(但与您的代码有些相关),您可能希望在每个方法的开头放置断点并查看您的应用程序崩溃的确切位置以帮助阐明在这个问题上。或者,将日志打印在每个方法的开始和结束处,以查看哪个方法开始和失败结束,并帮助检测问题出在哪里。

我的猜测是您将 null 作为参数传递给您的 addProject() 方法之一,这导致列表包含 null 对象,然后当适配器尝试对该 null 调用 toString() 方法时对象,你会得到错误。该对象也可以隐式传递,例如,作为您忘记初始化的变量。您可以做的是检查参数是否为 null,如果不是,则将其添加到列表中,或者如果参数为 null 则在其开始时退出方法或实现您想要的任何逻辑。