Android - 一个活动中的两个微调器 - 保存数据不起作用

时间:2017-08-18 08:39:46

标签: android sqlite spinner

我的问题如下。我在一项活动中有2个Spinners。我希望两个微调器项都应保存在DB中。但两个纺纱厂之间略有不同:

  • Spinner 1:由来自其他db-table的数据填充 - 当它是上述活动中唯一的微调器时,它可以工作。
  • Spinner 2:具有默认值。我不确定是否正确添加到我的活动中。无论如何,在我将其添加到我的保存后,数据不再有效。

请帮帮我,我做错了什么?

我的活动代码:

public class activity_transport extends AppCompatActivity {

    private BottomNavigationViewEx bottomNavigationViewEx;
    DatabaseHelper myDb;
    Button btn_save;
    Spinner ChooseProject,ChooseTransport;
    EditText Entfernung,Price,MWST;
    String selectedspinner, selectedTransport;

    ImageView imageView2;
    private static int PICK_IMAGE = 100;
    Uri imageUri;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_transport);
        myDb = new DatabaseHelper(this);

        ChooseProject = (Spinner) findViewById(R.id.ChooseProject);
        ChooseTransport = (Spinner) findViewById(R.id.ChooseTransport);
        Entfernung = (EditText) findViewById(R.id.Entfernung);
        Price = (EditText) findViewById(R.id.Preis);
        MWST = (EditText) findViewById(R.id.MwSt);
        btn_save=(Button) findViewById(R.id.btn_save);
        //bildanzeigebereich im layout
        imageView2=(ImageView) findViewById(R.id.imageView2);
        loadProjectSpinnerData();
        //loadTransportSpinnerData();
        SaveData();

    //+++++++++++++++Function to load the spinner data from SQLite database++++++++++//

    private void loadProjectSpinnerData() {
        // database handler
        DatabaseHelper db = new DatabaseHelper (getApplicationContext());

        // Spinner Drop down elements
        List<String> projects = db.getAllProjects();

        // Creating adapter for spinner
        ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, projects);

        // Drop down layout style - list view with radio button
        dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        ChooseProject.setPrompt("Projekt auswählen");

        // attaching data adapter to spinner
        ChooseProject.setAdapter(dataAdapter);



        //Choose Transport Spinner
        ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_spinner_item, new String[] {
                new String("Auto"),
                new String("Flugzeug"),
                new String("Taxi"),
                new String("Bahn")});
        ChooseTransport.setAdapter(spinnerArrayAdapter);

        // Drop down layout style - list view with radio button
        spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        ChooseTransport.setPrompt("Transport auswählen");

        // attaching data adapter to spinner
        ChooseTransport.setAdapter(spinnerArrayAdapter);


        //Listener für den Projekt Spinner damit ich den Wert abspeichern kann
        ChooseProject.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {

                Spinner spinner = (Spinner) parent;
                if(spinner.getId() == R.id.ChooseProject)
                {
                    selectedspinner = (String) ChooseProject.getSelectedItem();
                }
                else if(spinner.getId() == R.id.ChooseTransport)
                {
                    selectedTransport = (String) ChooseTransport.getSelectedItem();
                }
                //selectedspinner =String.ValueOf(parent.getItemAtPosition(pos));

            }
            public void onNothingSelected(AdapterView<?> parent) {
            }
        });

    }






    /*private void loadTransportSpinnerData() {
        // Spinner method to read the on selected value
        ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_spinner_item, new String[] {
                new String("Auto"),
                new String("Flugzeug"),
                new String("Taxi"),
                new String("Bahn")});
        ChooseTransport.setAdapter(spinnerArrayAdapter);


        // Creating adapter for spinner
        //ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, projects);

        // Drop down layout style - list view with radio button
        spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        ChooseTransport.setPrompt("Transport auswählen");

        // attaching data adapter to spinner
        ChooseTransport.setAdapter(spinnerArrayAdapter);

        //Listener für den Projekt Spinner damit ich den Wert abspeichern kann
        ChooseTransport.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
                //selectedspinner =String.ValueOf(parent.getItemAtPosition(pos));
                selectedTransport = (String) ChooseTransport.getSelectedItem();
            }
            public void onNothingSelected(AdapterView<?> parent) {
            }
        });

    }*/



    //++++++++++++Save Data++++++//
    public void SaveData(){
        btn_save.setOnClickListener(
                new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        boolean isInserted = myDb.createTransport(
                                selectedspinner,
                                selectedTransport,
                                Integer.valueOf(Price.getText().toString()),
                                Integer.valueOf(MWST.getText().toString()),
                                Integer.valueOf(Entfernung.getText().toString()),
                                imageViewToByte(imageView2)
                        );
                        if(isInserted=true)
                            Toast.makeText(activity_transport.this, "Daten gespeichert", Toast.LENGTH_LONG).show();
                        else
                            Toast.makeText(activity_transport.this, "Daten nicht gespeichert", Toast.LENGTH_LONG).show();

                    }
                }
        );
    }


}

修改

我试图通过设置几个断点来运行应用程序。 尝试运行此行selectedTransport = (String) ChooseTransport.getSelectedItem();时,调试器会发布Cannot find local variable 'ChooseTransport'

1 个答案:

答案 0 :(得分:0)

我解决了这个问题:

我为ChooseTransport - Spinner实现了一个自己的方法,现在它可以工作了。我还想出了我将数据添加到数据库的顺序是不对的。我也改变了这一点。

请看我的第二个微调器的方法:

private void loadTransportSpinnerData(){


        ArrayAdapter<CharSequence> spinnerArrayAdapter = ArrayAdapter.createFromResource(this, R.array.transport, android.R.layout.simple_spinner_dropdown_item);
        spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        ChooseTransport.setPrompt("Transport auswählen");
        ChooseTransport.setAdapter(spinnerArrayAdapter);

        ChooseTransport.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
                selectedTransport = (String) ChooseTransport.getSelectedItem();
            }

            @Override
            public void onNothingSelected(AdapterView<?> adapterView) {

            }
        });

    }