我想从自定义组件中完成Activity。
问题是如何从我的自定义组件中获取Activity的引用?
我只能在自定义组件中获得Context
。
我尝试将Context
转换为Activity
(代码如下),似乎没问题。
但我不确定这一点。也许有更好的方法。
所以,请告诉我这段代码是否足够好或有任何问题或风险。
public class MyCustomComponent extends RelativeLayout {
private Activity activity;
public MyCustomComponent(Context context, AttributeSet attrs) {
super(context);
Button btn = new Button(context);
btn.setText("finish");
addView(btn);
activity = (Activity)context; // here I want to get the Acitivity reference
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
MyCustomComponent.this.activity.finish();
}
});
}
}
答案 0 :(得分:0)
如何将活动传递给您的组件?
public MyCustomComponent(Context context, Activity activity, AttributeSet attars)
编辑 您可以将setActivity方法添加到您的类
public class MyCustomComponent extends RelativeLayout {
private Activity activity;
public void setActivity(Activity myActivity){
activity = myActivity;
}
public MyCustomComponent(Context context, AttributeSet attrs) {
super(context, attrs);
Button btn = new Button(context);
btn.setText("finish");
addView(btn);
btn.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
activity.finish();
}
});
}
}
并在您的主要活动中添加
finishAction = (MyCustomComponent) findViewById(R.id.component);
finishAction.setActivity(this);