如何从自定义组件完成活动?

时间:2012-06-13 02:25:11

标签: android custom-component

我想从自定义组件中完成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();
        }
    });
}

}

1 个答案:

答案 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);