也许我错过了这里的东西,但它在这里。假设我扩展了Button
public class MyButton extends Button {
...
public MyButton(Context context, AttributeSet attrs) {
super(context, attrs);
...
}
}那么,在第二种情况下,如何获得对话或活动的实例呢?
编辑 Ok更多代码以更好地说明我想做的事情:
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();
}发布于 2014-12-12 00:00:21
我也遇到过类似的情况,我用这段代码来解决我的案子:
private static Activity scanForActivity(Context cont) {
if (cont == null)
return null;
else if (cont instanceof Activity)
return (Activity)cont;
else if (cont instanceof ContextWrapper)
return scanForActivity(((ContextWrapper)cont).getBaseContext());
return null;
}希望这能帮上忙。
发布于 2012-10-29 20:55:44
我不完全理解你在做什么,但是你应该能够从你的对话框中获得getOwnerActivity()活动的参考。
也许:
public MyButton(Context context, AttributeSet attrs) {
super(context, attrs);
Activity activity = getOwnerActivity();
...
}https://stackoverflow.com/questions/13129428
复制相似问题