2017-02-21 10 views
-4

私はAndroidスタジオの新機能で、スタートアップアプリの背景色を変更する方法を見つけようとしています。Androidスタジオは1ボタンをクリックして複数回背景色を変更します

アプリが読み込まれる瞬間、画面上にボタンが表示され、クリックすると赤色に変わります。

私が欲しいのは、ボタンをクリックすると、赤から緑、青、赤に変わります。

しかし、私はこれらのエラーを得続ける:

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

主な活動のXMLファイル:

<?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> 

テスト活動Javaコード:

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

にビューを型変換! –

+0

パブリッククラスの主なアクティビティは、appcompatactivityとViewビューを拡張しています。あなたや誰かが私を助けて色を切り替えることができたらいいなあと思っています。 –

+1

'アプリケーションがロードされる瞬間、画面上のボタンが表示されます。クリックすると、赤色に変わります。「ボタンはありますか?」男、それはあなたの本当のコードですか? –

答えて

0

あなたを与えるために優れた助けてください、あなたがコードを見てする必要があります。私はandersted場合 任意の方法は、あなたが右多分これはあなたを助ける:

をあなたのxmlレイアウトに:あなたの活動に

<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> 

:活動のあなたonCreate

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

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

    layout.setBackgroundColor(Color.RED); 
+0

私はまだいくつかの問題と問題を抱えています。 –

+0

あなたのコードはまだあなたのボタンで表示されていません。 – csmckelvey

+0

私はActivityMain xmlファイルとTestActivity.javaファイルにあるすべてのコードを削除します。 –

0

あなたが望むものを正しく理解していれば、時間の経過とともに一連の色に変化し、各色は約1〜2秒持続する。 AndroidのデフォルトのCountDownTimerを使用できます。

xmlレイアウトを同じにします。あなたの活動に

:これは役立つかもしれない

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

希望。私が何か誤解した場合は、コメントしてください。

編集:私はあなたのコードを追加しなければならないのLinearLayout

+0

これはまさに私が望むものです。うまくいけば、最後の色の後に最初に戻ります –

+0

私もそれを実行しようとしましたが、私はこのエラーがありますTestActivityを実行中のエラー:com.example.bikam.mycolorapp。TestActivityがActivityサブクラスまたはエイリアスではありません –

+0

私はいくつかの変更を行いましたが、これが修正されない場合は、正確なActivityコードとエラーが発生している行番号を投稿してください。 – deepankar

関連する問題