0

カスタム コンポーネントからアクティビティを終了したいと考えています。質問は、カスタム コンポーネントからアクティビティの参照を取得する方法です。私が得ることができるのは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();
        }
    });
}

}

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 に答える