也許我錯過了這裏,但在這裏。讓說,我延伸按鈕從自定義按鈕訪問活動
public class MyButton extends Button {
...
public MyButton(Context context, AttributeSet attrs) {
super(context, attrs);
...
}
}
- 如果myButton爲在例如MyActivity我可以簡單地將上下文轉換爲活動。
- 現在,如果MyButton是MyDialog的一部分(擴展對話框),context.getClass()將指向ContextThemeWrapper,我無法獲得活動。
那麼如何在第二種情況下獲得對話框或活動的實例?
編輯 還行代碼,以便更好地說明我想做的事:
public class MyDialog extends Dialog {
private MyButton myButton;
public MyDialog(Context context) {
super(context)
this.setContentView(R.layout.my_dialog);
this.setTitle("My Dialog");
myButton = (MyButton) findViewById(R.id.my_button);
}
}
public class MyButton extends Button implements Command {
private MyActivity myActivity;
public MyButton(Context context, AttributeSet attrs) {
super(context, attrs);
System.out.println(context instanceof ContextThemeWrapper); // TRUE
System.out.println(context instanceof Activity); // FALSE
myActivity = ??? // or myDialog = ???
}
@Override
public void execute() {
MyDialog myDialog = myActivity.getMyDialog();
myDialog.cancel();
}
}
和地方其他類連接監聽器後:
@Override
public void onClick(View v) {
Command command = (Command) v;
command.execute();
}
請給出你的問題的一些上下文(沒有雙關語意圖)。你想用對話框或活動實例做什麼? –
例如MyButton也可以使用execute()方法實現Command接口,並且在一些外部類中,我可以使用Command =(Command)v;如果我點擊按鈕,execute()方法運行。我需要從MyButton中獲取對話框實例來關閉對話框。我只是好奇/在閱讀後玩這個:http://alvinalexander.com/java/java-command-design-pattern-in-java-examples – krisk