2017-02-21 1 views
-4

Ich bin brandneu auf Android Studio und versuche herauszufinden, wie die Hintergrundfarbe meiner Start-up-App ändern.Android Studio ändern Hintergrundfarbe mehrmals mit 1 Klick klicken

Sobald die App geladen wird, sehe ich eine Schaltfläche auf dem Bildschirm, und wenn ich klicke, wird die Farbe rot angezeigt.

Was ich will ist, wenn Sie auf die Schaltfläche klicken, es geht von rot nach grün zu blau als zurück zu rot.

Aber ich bekomme immer wieder diese Fehler:

Error:Execution failed for task ':app:compileDebugJavaWithJavac'. Compilation failed; see the compiler error output for details. Error:(72, 9) error: class, interface, or enum expected

Main Activity XML-Datei:

<?xml version="1.0" encoding="utf-8"?> 

<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" 
android:id="@+id/layout"> 
<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Change Color" 
    android:onClick="onChangeColor"/> 
</LinearLayout> 

Test-Aktivität Java-Code:

private int colorIndex = 1; 
public void onChangeColor(View view) { 
    int color; 
    if(colorIndex==0) { 
    color = Color.RED; 
    colorIndex = 1; 
    }else if(colorIndex==1) { 
    color = Color.GREEN; 
    colorIndex = 2; 
    }else { 
    //colorIndex = 2 
    color = Color.BLUE; 
    colorIndex = 0; 
    } 

    View layout = findViewById(R.id.layout); 
    layout.setBackgroundColor(color); 
    } 


public class TestActivity extends AppCompatActivity { 
View view; 

//declare a string variable in java a class 
//private var colour = "green"; 

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

    layout.setBackgroundColor(Color.RED); 

    view= this.getWindow().getDecorView(); 
    view.setBackgroundResource(R.color.gray); 
} 
public void goRed(View v) 
{ 
    //if (colour == "green"){ 
     view.setBackgroundResource(R.color.red); 
     //colour = "red"; 
    //} 

} 
} 
+1

Sie Ihren Code hinzufügen sollten! –

+0

Es gibt mein Code mind die öffentliche Klasse Hauptaktivität erweitert appcompatactivity und die Ansicht anzeigen. Hoffe du oder jemand kann mir helfen, damit ich zwischen den Farben wechseln kann. –

+1

'In dem Moment, in dem die App geladen wird, sehe ich eine Schaltfläche auf dem Bildschirm und wenn ich klicke, wird die Farbe rot angezeigt." Siehst du Knöpfe ?! Mann, ist das dein echter Code? !!! –

Antwort

0

Um Ihnen ein ausgezeichnetes Hilfe, es wird notwendig sein, Sie Code zu sehen. Jede Art und Weise, wenn ich andersted Sie rechts vielleicht wird diese Ihnen helfen:

auf Ihrem xml Layout:

<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" 
android:id="@+id/layout"> 
<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Change Color" 
    android:onClick="onChangeColor"/> 
</LinearLayout> 

Auf Ihrer Aktivität:

private int colorIndex = 1; 
public void onChangeColor(View view) { 
    int color; 
    if(colorIndex==0) { 
     color = Color.RED; 
     colorIndex = 1; 
    }else if(colorIndex==1) { 
     color = Color.GREEN; 
     colorIndex = 2; 
    }else { 
     //colorIndex = 2 
     color = Color.BLUE; 
     colorIndex = 0; 
    } 

    View layout = findViewById(R.id.layout); 
    layout.setBackgroundColor(color); 
} 

Auf Sie onCreate der Tätigkeit

View layout = findViewById(R.id.layout); 

    layout.setBackgroundColor(Color.RED); 
+0

Ich habe immer noch einige Probleme und Probleme. –

+0

Sie haben uns Ihren Code noch nicht mit Ihrem Knopf gezeigt. – csmckelvey

+0

Das ist mein Code, den ich in meiner Activity_Main XML-Datei und meiner TestActivity.java-Datei habe. –

0

Wenn ich richtig verstanden habe, was Sie wollen, ist der Übergang über eine Reihe von Farben im Laufe der Zeit und jede Farbe für einige 1-2 Sekunden. Sie können Android's Standard CountDownTimer verwenden.

Behalten Sie Ihr xml-Layout gleich.

In Ihrer Aktivität:

public class TestActivity extends AppCompatActivity { 

LinearLayout layout; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.activity_main); 

    layout = (LinearLayout)findViewById(R.id.layout); 
    layout.setBackgroundColor(Color.RED); 
} 

public void onChangeColor(View view) { 
    // start your timer on button click 
    new CountDownTimer(3000, 1000) { 

    public void onTick(long millisUntilFinished) { 
     changeBackground(3-millisUntilFinished/1000); 
    } 

    }.start(); 
} 

private void changeBackground(int colorIndex){ 
    int color; 
    if(colorIndex==1) { 
    color = Color.GREEN; 
    }else if(colorIndex==2) { 
    color = Color.BLUE; 
    }else { 
    color = Color.RED; 
    } 
    layout.setBackgroundColor(color); 
} 
} 

Hope this helfen könnte. Wenn ich etwas falsch verstanden habe, bitte Kommentar.

Edit: I typecasted Blick auf Linearlayout

+0

Das ist genau das, was ich will und hoffentlich nach der letzten Farbe geht es zurück zum Anfang –

+0

Ich habe auch versucht, es auszuführen, aber ich habe diesen Fehler Error running TestActivity: com.example.bikam.mycolorapp.TestActivity ist keine Aktivitätsunterklasse oder kein Alias ​​ –

+0

Ich habe einige Änderungen vorgenommen, und wenn dies nicht funktioniert, können Sie bitte den genauen Aktivitätscode und die Zeilennummer eingeben, bei der Sie Fehler erhalten. – deepankar

Verwandte Themen