2017-08-18 1 views
0

mon problème est le suivant. J'ai 2 Spinners dans une activité. Je veux que les deux éléments spinner doivent être enregistrés dans la base de données. Mais il existe une légère différence entre les deux fileurs:Android - Deux spinners en une activité - Enregistrement des données ne fonctionne pas

  • Spinner 1: est peuplé par les données d'autres db-table - quand il est le seul spinner dans l'activité mentionnée, cela fonctionne.
  • Spinner 2: A des valeurs par défaut. Je ne suis pas sûr de l'avoir ajouté correctement à mon activité. Quoi qu'il en soit, après l'avoir ajouté à mon enregistrement, les données ne fonctionnent plus.

S'il vous plaît aidez-moi ce que je fais mal ??

Mon code d'activité:

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

        } 
       } 
     ); 
    } 


} 

EDIT:

J'ai essayé de lancer l'application en définissant quelques points d'arrêt. Lorsque vous essayez d'exécuter cette ligne selectedTransport = (String) ChooseTransport.getSelectedItem(); les messages de débogage Cannot find local variable 'ChooseTransport'

+0

ce que vous entendez par « la sauvegarde des données ne fonctionne plus »? quelle est ta question? – szholdiyarov

+0

enregistrer les données dans ma base de données ne fonctionne pas .. ma question est ce que je fais en mettant en œuvre le spinner 2? – Stelios

+0

dans mon code spinner 2 est 'ChooseTransport' – Stelios

Répondre

0

Je résolu le problème:

I mis en œuvre un propre méthode pour ChooseTransport - Spinner et maintenant il fonctionne. J'ai également compris que l'ordre dans lequel j'ajoute les données à la base de données n'était pas correct. J'ai aussi changé ça.

Voir ici ma méthode pour mon deuxième 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) { 

      } 
     }); 

    }