/ / Ako dokončiť aktivitu z vlastnej súčasti? - android, vlastný komponent

Ako dokončiť aktivitu z vlastného komponentu? - Android, vlastné komponenty

Chcem dokončiť aktivitu z môjho vlastného komponentu. Otázka je, ako získať odkaz na aktivitu z môjho vlastného komponentu? Všetko, čo môžem získať, je Context vo vlastnej súčasti. Snažil som sa previesť Context na Activity (kód je uvedený nižšie) a zdá sa, že je v poriadku. Ale nie som si tým istý. Možno existuje lepšia cesta. Prosím, povedzte mi, či je tento kód dosť dobrý alebo či má nejaký problém alebo riziko.

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

}

odpovede:

0 pre odpoveď č. 1

Čo tak preniesť aktivitu na svoj komponent?

public MyCustomComponent(Context context, Activity activity, AttributeSet attars)

upraviť Do svojej triedy môžete pridať metódu 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();
}
});
}

}

a vo svojej hlavnej činnosti pridať

    finishAction = (MyCustomComponent) findViewById(R.id.component);
finishAction.setActivity(this);