對不起,如果這太基礎。 我創建一個擴展的新類按鈕:創建自定義按鈕
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()從我的主類,點擊()方法被自動調用? 換句話說,這個按鈕應該像其他任何按鈕一樣,但是點擊時可以做更多的事情。 謝謝。
無法得到你想要達到的效果。 –
我省略了很多代碼來簡化它,結果證明它並不清楚。 在MainActivity中我有: private MyButton b = new MyButton(); (...) b.setOnClickListener(新View.onClickListerner(){ 公共無效的onClick(視圖v){// 一些代碼 } }); 單擊b時,我只想在執行private click()方法後才運行「某些代碼」。特別是,單擊()將旋轉背景,播放聲音並更改一些狀態變量。這些操作應該在b中完成,而不是在MainActivity的setOnClickListener中執行。 我希望現在已經清楚。 –