2016-04-20 11 views
-1

Dies ist die Quelle für eine kleine App, die ich in Android Studio mache. Wenn ich diese Funktion anrufe, nehme ich an, dass ich Hund, Katze und Papagei miteinander vergleichen und dann den Wert von dogCounter um 5 erhöhen soll. Wenn ich die Funktion jedoch ausführe, wird der Punktestand nicht aktualisiert.Checkboxen und if-else-Anweisungen

dogCounter= 0; 
catCounter = 0; 

//check boxes 
cutestCheckBoxDog = (CheckBox)findViewById(R.id.CheckboxCutestDog); 
cutestCheckBoxCat = (CheckBox)findViewById(R.id.CheckboxCutestCat); 
cutestCheckBoxParrot =(CheckBox)findViewById(R.id.CheckboxCutestParrot); 

//call methods 
processCutest(cutestCheckBoxDog, cutestCheckBoxCat, cutestCheckBoxParrot); 

showResultButton= (Button)findViewById(R.id.showResults); 
showResultButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      Toast.makeText(getApplicationContext(),catCounter + " " + dogCounter, Toast.LENGTH_LONG).show(); 

public void processCutest(CheckBox dog, CheckBox cat, CheckBox parrot){ 


    if (dog.isChecked() && !cat.isChecked() && !parrot.isChecked()){ 
     dogCounter += 5; 
    }else if (cat.isChecked() && !dog.isChecked() && !parrot.isChecked()){ 
     catCounter += 5; 
    } else{ 
     //nobody gets points 
    } 
} 

edit: Sorry für die schlechte Organisation. Immer noch ziemlich neu, Hinweise darauf wären auch gut.

package dogorcatperson.ivellapplication.com.dogorcatperson; 

import android.content.Intent; 
import android.os.Bundle; 
import android.support.design.widget.FloatingActionButton; 
import android.support.design.widget.Snackbar; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.view.View; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.widget.Button; 
import android.widget.CheckBox; 
import android.widget.RadioButton; 
import android.widget.RadioGroup; 
import android.widget.SeekBar; 
import android.widget.TextView; 
import android.widget.Toast; 

public class MainActivity extends AppCompatActivity { 

private RadioGroup canineRadioGroup; 
private RadioButton canineRadioButton; 
private SeekBar seekBar; 
private TextView seekBarTextView; 
private CheckBox cutestCheckBoxDog; 
private CheckBox cutestCheckBoxCat; 
private CheckBox cutestCheckBoxParrot; 
private RadioGroup droolRadioGroup; 
private RadioButton droolRadioButton; 
private Button showResultButton; 
private int dogCounter; 
private int catCounter; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    //call setup() 
    setUp(); 

    //seekbar 

    seekBar = (SeekBar) findViewById(R.id.seekBarFeline); 
    seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { 
     @Override 
     public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { 

      seekBarTextView.setText("comfortableness: " + progress + "/" + seekBar.getMax()); 
     } 

     @Override 
     public void onStartTrackingTouch(SeekBar seekBar) { 

     } 

     @Override 
     public void onStopTrackingTouch(SeekBar seekBar) { 

     } 
    }); 

} 

public void setUp(){ 

    dogCounter= 0; 
    catCounter = 0; 

    canineRadioGroup =(RadioGroup)findViewById(R.id.radioGroupCanine); 
    droolRadioGroup = (RadioGroup)findViewById(R.id.RadioGroupDrool); 
    seekBarTextView = (TextView)findViewById(R.id.seekBarProgressTextView); 

    //check boxes 
    cutestCheckBoxDog = (CheckBox)findViewById(R.id.CheckboxCutestDog); 
    cutestCheckBoxCat = (CheckBox)findViewById(R.id.CheckboxCutestCat); 
    cutestCheckBoxParrot = (CheckBox)findViewById(R.id.CheckboxCutestParrot); 

    //call methods 
    processCutest(cutestCheckBoxDog, cutestCheckBoxCat, cutestCheckBoxParrot); 
    processDrool(droolRadioGroup); 
    processCanine(canineRadioGroup); 

    showResultButton= (Button)findViewById(R.id.showResults); 
    showResultButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      Toast.makeText(getApplicationContext(),catCounter + " " + dogCounter, Toast.LENGTH_LONG).show(); 

//    Intent i = new Intent(MainActivity.this, ResultActivity.class); 
//    i.putExtra("catCounter", catCounter); 
//    i.putExtra("dogCounter", dogCounter); 
//    startActivity(i); 
     } 
    }); 
} 

public void processCutest(CheckBox dog, CheckBox cat, CheckBox parrot){ 


    if (dog.isChecked() && !cat.isChecked() && !parrot.isChecked()){ 
     dogCounter += 5; 
    }else if (cat.isChecked() && !dog.isChecked() && !parrot.isChecked()){ 
     catCounter += 5; 
    } else{ 
     //nobody gets points 
    } 
} 

public void processDrool(final RadioGroup radioGroup){ 

    radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { 
     @Override 
     public void onCheckedChanged(RadioGroup group, int checkedId) { 

      int radioId= radioGroup.getCheckedRadioButtonId(); 
      droolRadioButton = (RadioButton)findViewById(radioId); 

      if (droolRadioButton.getText().equals("yes")){ 
       dogCounter+= 5; 
      }else if (droolRadioButton.getText().equals("no")){ 
       catCounter+= 5; 
      } 

     } 
    }); 
} 

    public void processCanine(final RadioGroup radioGroup){ 

    radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { 
     @Override 
     public void onCheckedChanged(RadioGroup group, int checkedId) { 

      int radioId= canineRadioGroup.getCheckedRadioButtonId(); 
      canineRadioButton = (RadioButton)findViewById(radioId); 

      if (canineRadioButton.getText().equals("yes")){ 
       catCounter+= 5; 
      }else if (canineRadioButton.getText().equals("no")){ 
       dogCounter+= 5; 
      } 

     } 
    }); 
} 

}

+0

* "Es aktualisiert den Punktestand nicht." * Wird nicht aktualisiert ** wo **? In der Benutzeroberfläche? In den Feldern "dogCounter"/"catCounter"? –

+0

Der Code in der Frage ist (Entschuldigung) ein Durcheinander. Könnten Sie bitte den minimalen, aber syntaktisch korrekten Code posten? –

+0

Ihr Code scheint einige enge Klammern zu fehlen. Können Sie es genau so kopieren, wie Sie es in Ihrer Entwicklungsumgebung haben? Ich denke, dass es wahrscheinlich leicht zu beheben ist. Es sieht so aus, als ob die processCutest-Methode unabhängig davon ausgeführt wird, wann auf die Schaltfläche geklickt wird. – quest4truth

Antwort

0

Ich glaube, Sie müssen nur Ihren processCutest Anruf ändern, so dass es innerhalb der onClick Methode geht, aber vor dem toast.makeText Anruf. Wie folgt:

showResultButton= (Button)findViewById(R.id.showResults); 
showResultButton.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     processCutest(cutestCheckBoxDog, cutestCheckBoxCat, cutestCheckBoxParrot); 

     Toast.makeText(getApplicationContext(),catCounter + " " + dogCounter, Toast.LENGTH_LONG).show(); 

Ich gehe davon aus, dass die tatsächlichen Kontrollkästchen an anderer Stelle definiert sind. Erscheinen Ihre Checkboxen? Wenn ja, möchten Sie vielleicht auch die Aufrufe processDrool und processCanine einstellen.

+0

Das hat funktioniert! Vielen Dank! – Vell

+0

Ich bin froh, dass ich helfen konnte – quest4truth