제목 그대로 커스텀 버튼을 만들고싶습니다.
처음엔 초기색상인 초록색이 설정되어있고
버튼을 누를때 마다 빨간색, 파란색 순으로 색상이 바뀌는 커스텀버튼을
만들어 보려고 하는데
#메인
package com.example.reversecard;
import android.os.Bundle;
import android.app.Activity;
import android.graphics.drawable.BitmapDrawable;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
public class CardGame extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_card_game);
final BitmapDrawable drawable0 = (BitmapDrawable) getResources().getDrawable(R.drawable.green);
final BitmapDrawable drawable1 = (BitmapDrawable) getResources().getDrawable(R.drawable.red);
final BitmapDrawable drawable2 = (BitmapDrawable) getResources().getDrawable(R.drawable.blue);
final Cards card1_1 = new Cards(this);
card1_1.button = (Button)findViewById(R.id.card1_1);
card1_1.button.setOnClickListener(card1_1.listener);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_card_game, menu);
return true;
}
}
---------------------------------------------------------------------------------
#커스텀버튼
package com.example.reversecard;
import android.content.Context;
import android.graphics.drawable.BitmapDrawable;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class Cards {
int state = 0;
final int RED = 1;
final int BLUE = 2;
Button button;
Context mContext;
public Cards(Context context)
{
mContext = context;
}
OnClickListener listener = new OnClickListener()
{
BitmapDrawable drawable0 = (BitmapDrawable) mContext.getResources().getDrawable(R.drawable.green);
BitmapDrawable drawable1 = (BitmapDrawable) mContext.getResources().getDrawable(R.drawable.red);
BitmapDrawable drawable2 = (BitmapDrawable) mContext.getResources().getDrawable(R.drawable.blue);
@Override
public void onClick(View v) {
if(state==RED){
button.setBackgroundDrawable(drawable1);
state = BLUE ;
}
else{
button.setBackgroundDrawable(drawable2);
state = RED;
}
}
};
}
이런식으로 커스텀버튼(Cards)을 만들고 커스텀버튼 클래스 안에 클릭리스너를 삽입하여
메인(CardGame)에서 커스텀버튼을 불러와서 리스너를 집어넣어주려고 하는데
계속 에러가 나서 질문 드립니다.
제 생각엔 메인(CardGame)에서 커스텀버튼(Cards)의 클릭리스너를 집어넣어줄때
card1_1.button.setOnClickListener(card1_1.listener);
혹은
커스텀버튼을 생성할때
card1_1.button = (Button)findViewById(R.id.card1_1);
에러가 발생하는 것 같은데 왜 에러가 나는지 알 수 있을까요?
button Context객체가 없는데요??
제가 알기론 View에 관련된 것들은 생성자로 Context가 잇어야하는데요..
Cards클래스에서 버튼은 선언했지만.. 객체가 생성자를 이용하여 초기화 되지 않았어요..
즉, 생성자에서 button = new Button(mContext); 를 한다던지.. new로 선언해주셔야할거같아요 ~
제대로 선언되지 않았는데 불러서 쓸려고 하니 에러나는거같네요 ^^;; ㅎ
한번 해보세요.. 저도 그냥 보고 말하는거라 정확하지 않을수도..