2016-11-07 1 views
0

binden Ich habe ein Basisprogramm. Ich möchte den Hintergrund der einzelnen Tasten basierend auf der Anzahl der Benutzer klicken, und wenn alle Tasten denselben Hintergrund haben, wird der Benutzer mit der nächsten Aktivität fortfahren. Einfach genug, oder so dachte ich ... Ich kann einfach nicht herausfinden, wie man die IF-Aussagen miteinander vergleicht. Ich habe eine Stunde damit verbracht, Code zu schreiben und neu zu schreiben, um eine Antwort zu finden. Es muss eine einfache Antwort geben, die ich vermisse und ich kann mich einfach nicht einmischen.Wie If-Anweisungen zu einer größeren If-Anweisung in Java

public class MainActivity extends Activity 
{ 
    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     addListenerOnButton(); 
    } 

    Button a1; 
    Button a2; 
    Button a3; 
    Button a4; 

    static int count1=0; 
static int count2=0; 
static int count3=0; 
static int count4=0; 


    public void addListenerOnButton() { 



     final Button a1 = (Button) findViewById(R.id.a1); 
     a1.setOnClickListener(new OnClickListener()     
       @Override 
       public void onClick(View v) { 
        count1=count1+1; 
        if(count1==1||count1==4||count1==8) 
        { a1.setBackgroundColor(Color.RED); 
         Toast.makeText(getApplicationContext(),"Button clicked !", Toast.LENGTH_LONG).show();} 
        else if(count1==2||count1==6) 
        {a1.setBackgroundColor(Color.BLUE); 
         Toast.makeText(getApplicationContext(),"Button clicked" +count1, Toast.LENGTH_LONG).show();} 
        else{a1.setBackgroundColor(Color.YELLOW); 
         Toast.makeText(getApplicationContext(),"Button clicked" +count1, Toast.LENGTH_LONG).show(); 
        }}}); 
     final Button a2 = (Button) findViewById(R.id.a2); 
     a2.setOnClickListener(new OnClickListener() { 
       int clickcount=0; 
       @Override 
       public void onClick(View v) { 
        clickcount=clickcount+1; 
        if(clickcount==2||clickcount==4||clickcount==7) 
        { a2.setBackgroundColor(Color.RED); 
         Toast.makeText(getApplicationContext(),"Button clicked first time!", Toast.LENGTH_LONG).show();} 
        else if(clickcount==1||clickcount==3) 
        {a2.setBackgroundColor(Color.BLUE); 
         Toast.makeText(getApplicationContext(),"Button clicked" +clickcount, Toast.LENGTH_LONG).show();} 
        else{a2.setBackgroundColor(Color.YELLOW); 
         Toast.makeText(getApplicationContext(),"Button clicked" +clickcount, Toast.LENGTH_LONG).show(); 
        }}}); 
     final Button a3 = (Button) findViewById(R.id.a3); 
     a3.setOnClickListener(new OnClickListener() { 
       int clickcount=0; 
       @Override 
       public void onClick(View v) { 
        clickcount=clickcount+1; 
        if(clickcount==1||clickcount==2||clickcount==6) 
        { a3.setBackgroundColor(Color.RED); 
         Toast.makeText(getApplicationContext(),"Button clicked first time!", Toast.LENGTH_LONG).show();} 
        else if(clickcount==4||clickcount==5||clickcount==7) 
        {a3.setBackgroundColor(Color.BLUE); 
         Toast.makeText(getApplicationContext(),"Button clicked" +clickcount, Toast.LENGTH_LONG).show();} 
        else{a3.setBackgroundColor(Color.YELLOW); 
         Toast.makeText(getApplicationContext(),"Button clicked" +clickcount, Toast.LENGTH_LONG).show(); 
        }}}); 

     final Button a4 = (Button) findViewById(R.id.a4); 
     a4.setOnClickListener(new OnClickListener() { 
       int clickcount=0; 
       @Override 
       public void onClick(View v) { 
        clickcount=clickcount+1; 
        if(clickcount==3||clickcount==5||clickcount==7||clickcount==8) 
        { a4.setBackgroundColor(Color.RED); 
         Toast.makeText(getApplicationContext(),"Button clicked first time!", Toast.LENGTH_LONG).show();} 
        else if(clickcount==2||clickcount==9) 
        {a4.setBackgroundColor(Color.BLUE); 
         Toast.makeText(getApplicationContext(),"Button clicked" +clickcount, Toast.LENGTH_LONG).show();} 
        else{a4.setBackgroundColor(Color.YELLOW); 
         Toast.makeText(getApplicationContext(),"Button clicked" +clickcount, Toast.LENGTH_LONG).show(); 
       }}});   



     } 


} 
     public void checkFunc(){ 
     if(count1==1)  

      { 
       Intent browserIntent = 
        new Intent(Intent.ACTION_VIEW,  Uri.parse("https://www.google.com/")); 
       startActivity(browserIntent); 

     } 
    } 


    } 

Ein Weg, halte ich habe mein Ziel zu erreichen, ist etwas entlang der Linien von

if((a1.setBackgroundColor(Color.BLUE)==true)|| (a2.setBackgroundColor(Color.BLUE)==true)) 

bearbeiten ** So nach ein paar Dinge, ich versuche, meinen Code ein wenig bearbeitet und kippt es nach wie vor an der Arbeit . Irgendwelche weiteren Vorschläge?

+0

"wie die IF-Anweisungen miteinander zu vergleichen." Was meinen Sie? –

+0

Es ist sehr unklar, was Sie damit machen wollen, aber vielleicht helfen Ihnen zunächst andere Methoden, zu klären, wohin Sie damit gehen. – Makoto

+0

Ich möchte eine if-Anweisung, die sagt "wenn der Hintergrund der Schaltfläche a1 X ist und der Hintergrund der Schaltfläche a2 X ist, dann gehen Sie zu ACTION" – Oliver

Antwort

1

Sie können den Vergleich stattdessen mit statischen Variablen durchführen. Deklarieren Sie die Variablen auch global. Es ist kein guter Ansatz, aber hier ist:

//global static vars 
static int count1=0; 
static int count2=0; 
static int count3=0; 
static int count4=0; 

//make sure you include your conditions. I've added this just for reference 
public void addListenerOnButton() { 
    a1.setOnClickListener(new OnClickListener() { 
@Override public void onClick(View v) 
    { 
    count1++; 
    } 
} 

a2.setOnClickListener(new OnClickListener() { 
    @Override public void onClick(View v) 
{ 
    count2++; 
    } 
} 

//And so on... 
} 

public void checkFunc() 
{ 
if(count1==count2==count3==count4) 
    { 
    //do something 
    } 
} 
+0

Das hat nicht genau das repariert, was ich brauchte, aber es half ein bisschen. Ich habe das Projekt für eine Weile auf Eis gelegt und bin wieder zum Debuggen eines anderen Projekts, das ich gestartet habe, zurückgekehrt. Danke für Ihre Eingabe. – Oliver

0

Ich schlage vor, dass ClickCount-Variablen innerhalb der Klasse, nicht in Click-Handler deklarieren. So können Sie erreichen, dass jeder Klick auf die Schaltfläche jede clickHandler-Methode zählt. Schreiben Sie also eine Methode, die clickCount's vergleicht, und rufen Sie diese Methode in jedem clickHandler auf.

private int clickCount1, clickCount2, clickCount3, clickCount4; 
private void compareClickCounts(){ 
    // Compare clickCounts and change buttons properties 
} 
Verwandte Themen