0

我想从我的自定义组件中完成 Activity。问题是如何从我的自定义组件中获取 Activity 的引用?我能得到的只是Context自定义组件。我试图转换ContextActivity(代码如下),看起来还可以。但我不确定这一点。也许有更好的方法。所以,请告诉我这段代码是否足够好或有任何问题或风险。

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();
        }
    });
}

}

4

1 回答 1

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);
于 2012-06-13T02:44:24.537 回答