【发布时间】:2012-10-29 20:49:38
【问题描述】:
也许我在这里错过了什么,但在这里。假设我扩展了 Button
public class MyButton extends Button {
...
public MyButton(Context context, AttributeSet attrs) {
super(context, attrs);
...
}
}
- 如果 MyButton 在例如MyActivity 我可以简单地将上下文转换为活动。
- 现在如果 MyButton 是 MyDialog 的一部分(扩展 Dialog),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 = (Command) v 的 onClick() 方法;如果我单击按钮,execute() 方法就会运行。我需要从 MyButton 内部访问对话框实例,例如关闭对话框。读完后我只是好奇/玩:alvinalexander.com/java/…
标签: android