【问题标题】:How to finish the Activity from Custom Component?如何从自定义组件完成 Activity?
【发布时间】:2012-06-13 02:25:11
【问题描述】:

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

}

【问题讨论】:

    标签: android custom-component


    【解决方案1】:

    将活动传递给您的组件怎么样?

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

    【讨论】:

    • 对不起,我不太明白这个。但是我担心自定义组件不能与这样的构造函数一起正常工作。
    • 您好,实际上我只是直接从您的代码中复制,完成我的活动没有问题。
    • 这不是我想要的。无论如何谢谢你。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-19
    • 2011-05-17
    • 1970-01-01
    • 2020-06-07
    • 1970-01-01
    相关资源
    最近更新 更多