저번에 removeView() 에러 관련해서 질문 올렸던 사람인데요
일단 화면으로 플래시를 쓰는 기능에 메뉴버튼을 누르면 색 설정 버튼이 나오고 그 버튼을 누르면
배경화면 색을 설정할 수 있는 AlertDialog창이 나옵니다.
여기엔 R, G, B 별로 Seekbar 3개가 있고 각 옆에는 EditText가 있어요. 대략..

이런 모습인데요, 저 Seekbar 를 움직이면 옆에 EditText에다가 Seekbar 조절값을 setText 하게 해주고
각 Seekbar를 조절하면 배경화면 색이 바뀌도록 코드를 짯는데 문제는 작동을 안하네요.
제가 inflate를 사용하여 View 객체를 가져왔는데 그 과정에서 뭘 하나 빼먹은거 같은데..
onProgressChanged 메소드 안에 Seekbar를 조절할때 로그를 찍어봤는데 로그도 안찍히네요. 마치 메소드가 작동하지 않는것처럼..
코드 올려드릴게요.
package com.example.flashlight;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.graphics.Color;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.WindowManager;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.SeekBar;
public class ScreenLight extends Activity {
private LinearLayout mFlash_screen;
private WindowManager.LayoutParams mScreen;
SeekBar mSeekbarRed;
SeekBar mSeekbarGreen;
SeekBar mSeekbarBlue;
EditText RedEditText;
EditText GreenEditText;
EditText BlueEditText;
int r = 255;
int g = 255;
int b = 255;
@Override
protected void onCreate (Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.screenlight);
mFlash_screen = (LinearLayout) findViewById(R.id.flash_screen);
mScreen = getWindow().getAttributes();
mScreen.screenBrightness = 1f;
getWindow().setAttributes(mScreen);
mFlash_screen.setBackgroundColor(Color.rgb(r, g, b)); //배경색을 초기화 한다.
//XML 레이아웃을 View 객체로 전개
View view = getLayoutInflater().inflate(R.layout.coloroption_dialog, null);
RedEditText = (EditText)view.findViewById(R.id.RedEditText);
GreenEditText = (EditText)view.findViewById(R.id.GreenEditText);
BlueEditText = (EditText)view.findViewById(R.id.BlueEditText);
mSeekbarRed = (SeekBar)view.findViewById(R.id.RedSeekBar);
mSeekbarGreen = (SeekBar)view.findViewById(R.id.GreenSeekBar);
mSeekbarBlue = (SeekBar)view.findViewById(R.id.BlueSeekBar);
mSeekbarRed.setOnSeekBarChangeListener(onSeekbarChangeListener);
mSeekbarGreen.setOnSeekBarChangeListener(onSeekbarChangeListener);
mSeekbarBlue.setOnSeekBarChangeListener(onSeekbarChangeListener);
}
@Override
public boolean onCreateOptionsMenu (Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.screenlight, menu);
return true;
}
@Override
public boolean onOptionsItemSelected (MenuItem item) {
switch (item.getItemId()) {
case R.id.coloroption:
createAlertDialog().show();
break;
default:
break;
}
return super.onOptionsItemSelected(item);
}
private SeekBar.OnSeekBarChangeListener onSeekbarChangeListener = new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged (SeekBar seekBar, int progress, boolean fromUser) {
r = mSeekbarRed.getProgress();
g = mSeekbarGreen.getProgress();
b = mSeekbarBlue.getProgress();
mFlash_screen.setBackgroundColor(Color.rgb(r, g, b));
RedEditText.setText(mSeekbarRed.getProgress());
GreenEditText.setText(mSeekbarGreen.getProgress());
BlueEditText.setText(mSeekbarGreen.getProgress());
}
@Override
public void onStartTrackingTouch (SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch (SeekBar seekBar) {
}
};
private AlertDialog createAlertDialog () {
View innerView = getLayoutInflater().inflate(R.layout.coloroption_dialog, null);
final AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setView(innerView).setTitle("배경색 설정").setPositiveButton("닫기", new DialogInterface.OnClickListener() {
@Override
public void onClick (DialogInterface dialogInterface, int i) {
dialogInterface.dismiss();
}
});
return builder.create();
}
@Override
protected void onStart () {
super.onStart();
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
@Override
protected void onPause () {
super.onPause();
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
@Override
protected void onDestroy () {
super.onDestroy();
mScreen.screenBrightness = 0f; // (중요!)이게 없으면 폰에 버그가 생긴다.
getWindow().setAttributes(mScreen);
}
}