엔터를 자주 눌렀을 뿐, 별로 길지 않은 질문입니다.
답변 부탁드립니다 ㅜㅜ
안드로이드 스튜디오에서 버튼을 누를 때마다
화면과 나머지 위젯들의 색깔을 변화시키는 코드를
짰는데요. 두 개의 클래스가 있습니다.
MainActivity 클래스하고 OptionsActivity 클래스가 있는데,
MainActivity 클래스의 변수 gameColor의 값이
0일 경우와 1일 경우의 색을 다르게 하도록 설정하고,
OptionsActivity 클래스에서 어떤 버튼을 누를 때마다
MainActivity 클래스의 변수 gameColor 값을 0 또는 1로
계속 변경 시키도록 코딩하였습니다.
그렇게 한 다음 실행을 해보니, 적용이 되긴 됩니다. 되는데,
너무 늦게 되는 것 같아요. 버튼을 누르자마자 바로 적용되는 게
아니라, 시간이 좀 지나고 나서야 적용이 되더라구요.
OptionsActivity 화면 같은 경우는 버튼을 누르고,
MainActivity 화면으로 한 번 왔다갔다 해야지만
적용이 되더군요. 원인을 알고 싶습니다. 도와주세요 ㅠㅠ
------------------------------------------
이건 MainActivity 클래스 입니다.
import android.content.Intent;
import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.RelativeLayout;
public class MainActivity extends AppCompatActivity
{
private Intent intent;
private ScreenActivity gameScreen;
private RelativeLayout mainScreen;
private Button startButton;
private Button scoreButton;
private Button optionsButton;
static int gameColor = 0;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mainScreen = (RelativeLayout)findViewById(R.id.MainScreen_Layout);
startButton = (Button)findViewById(R.id.Start_Button);
startButton.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
setContentView(gameScreen);
}
});
optionsButton = (Button)findViewById(R.id.Options_Button);
optionsButton.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
intent = new Intent(MainActivity.this, OptionsActivity.class);
startActivity(intent);
}
});
scoreButton = (Button)findViewById(R.id.Score_Button);
scoreButton.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
intent = new Intent(MainActivity.this, ClearOverActivity.class);
startActivity(intent);
}
});
if(gameColor==0)
{
mainScreen.setBackgroundColor(Color.WHITE);
startButton.setBackgroundColor(Color.WHITE);
startButton.setTextColor(Color.BLACK);
scoreButton.setBackgroundColor(Color.WHITE);
scoreButton.setTextColor(Color.BLACK);
optionsButton.setBackgroundColor(Color.WHITE);
optionsButton.setTextColor(Color.BLACK);
}
if(gameColor==1)
{
mainScreen.setBackgroundColor(Color.BLACK);
startButton.setBackgroundColor(Color.BLACK);
startButton.setTextColor(Color.WHITE);
scoreButton.setBackgroundColor(Color.BLACK);
scoreButton.setTextColor(Color.WHITE);
optionsButton.setBackgroundColor(Color.BLACK);
optionsButton.setTextColor(Color.WHITE);
}
}
}
------------------------------------------
이건 OptionsActivity 클래스 입니다.
import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.RelativeLayout;
public class OptionsActivity extends AppCompatActivity
{
private RelativeLayout optionsScreen;
private CheckBox musicCB;
private CheckBox soundCB;
private Button colorSet;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.options);
optionsScreen = (RelativeLayout)findViewById(R.id.OptionsScreen_Layout);
colorSet = (Button)findViewById(R.id.GameColor_Button);
colorSet.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
if(MainActivity.gameColor == 0)
MainActivity.gameColor=1;
else
MainActivity.gameColor=0;
}
});
musicCB = (CheckBox)findViewById(R.id.Music_CheckBox);
soundCB = (CheckBox)findViewById(R.id.Sound_CheckBox);
if(MainActivity.gameColor == 0)
{
optionsScreen.setBackgroundColor(Color.WHITE);
colorSet.setBackgroundColor(Color.WHITE);
colorSet.setTextColor(Color.BLACK);
musicCB.setBackgroundColor(Color.WHITE);
musicCB.setTextColor(Color.BLACK);
soundCB.setBackgroundColor(Color.WHITE);
soundCB.setTextColor(Color.BLACK);
}
if(MainActivity.gameColor == 1)
{
optionsScreen.setBackgroundColor(Color.BLACK);
colorSet.setBackgroundColor(Color.BLACK);
colorSet.setTextColor(Color.WHITE);
musicCB.setBackgroundColor(Color.BLACK);
musicCB.setTextColor(Color.WHITE);
soundCB.setBackgroundColor(Color.BLACK);
soundCB.setTextColor(Color.WHITE);
}
}
}