너무 근사하면 죄송합니다. 나는 확장하는 새로운 클래스를 생성 버튼 : 내 주요 활동에서맞춤 검색 버튼 만들기
public class MyButton extends Button {
public static final int STATUS_OFF = 0;
public static final int STATUS_PLAY1 = 1;
public static final int STATUS_PLAY2 = 2;
public static final int STATUS_PLAY3 = 3;
public int status;
private Context ctx;
public MyButton(Context context) {
super(context);
ctx = context;
status = STATUS_OFF;
super.setBackgroundResource(R.drawable.sound_button_off);
}
private void click() {
switch (status) {
case STATUS_OFF:
status = STATUS_PLAY1;
break;
case STATUS_PLAY1:
status = STATUS_PLAY2;
break;
case STATUS_PLAY2:
status = STATUS_OFF;
break;
case STATUS_PLAY3:
break;
}
// OTHER THINGS TO DO
}
}
:
이 가능한 것으로 만들 수있는 방법public class MyActivity extends Activity {
private static final int HORIZ = 16;
private MyButton[] b = new MyButton[HORIZ];
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_rhythm);
createButtons();
}
private void createButtons() {
LinearLayout layout = (LinearLayout)findViewById(R.id.layout_main_linear);
for (int w=0; w<HORIZ; w++) {
b[w] = new MyButton(MyActivity.this);
LinearLayout.LayoutParams p = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
layout.addView(b[w], p);
b[w].setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// HELP ME HERE
// WHEN CLICKING THIS BUTTON, IT AUTOMATICALLY SHOULD RUN the private method click();
// IT IS PRIVATE AND SHOULD NOT BE RUN FROM HERE, BUT AUTOMATICALLY EACH TIME THE BUTTON IS CLICKED.
}
});
}
}
}
때 내 메인 클래스에서 내가 setOnClickListener(), 클릭() 메서드가 자동으로 호출됩니까? 다른 말로하면이 버튼은 다른 버튼처럼 동작하지만, 클릭 할 때 MORE를 수행해야합니다. 감사합니다. . 이름은이 파일이 유 유용 할 것이며,이 파일 이름으로 UR 버튼의 배경을 XML 당김 폴더에 넣고, 및 설정 ... :
실제로 달성하고자하는 것을 얻지 못했습니다 .. –
간단하게하기 위해 많은 코드가 생략되었지만 명확하지 않습니다. 내가 가지고있는 MainActivity에서 : private MyButton b = new MyButton(); (...) b.setOnClickListener (뉴 View.onClickListerner() { 공공 무효 온 클릭 (보기 V) { // 일부 코드 } }); b를 클릭하면 private click() 메서드가 실행 된 후에 만 "some code"를 실행하려고합니다. 특히,()를 클릭하면 배경이 회전하고 사운드가 재생되며 일부 상태 변수가 변경됩니다. 이러한 작업은 b 내부에서 수행되어야하며 MainActivity의 setOnClickListener에서 실행되지 않아야합니다. 지금은 분명하기를 바랍니다. –