Ich habe eine Klasse SomeView, die Ansicht erweitert und das in einer Klasse angezeigt wird Steuerelemente, die lineares Layout erweitert.onClickListener auf Aktivität
Das lineare Layout wird amCreate einer Aktivität instanziiert. Ich möchte eine Methode in der Aktivität jedes Mal aufrufen, wenn ich auf diese Ansicht SomeView klicke. Ich habe versucht, eine OnClickListener in der Tätigkeit zu setzen, wie dieses
public class MainActivity extends AppCompatActivity implements
SomeView.OnClickListener {
private Controls menu;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
menu = new Controls(this);
menu.getSomeView().setOnClickListener(this);
setContentView(menu);
}
@Override
public void onClick(View view) {
System.out.println("Hello");
}
}
Die Kontrollen Klasse wie diese wie folgt
public class Controls extends LinearLayout {
private SomeView aview;
public Controls(Context context) {
super(context);
this.setOrientation(LinearLayout.HORIZONTAL);
aview = new SomeView(context);
this.addView(aview, new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
}
public SomeView getSomeView() {
return aview;
}
}
und die SomeView Klasse sieht aussieht (es zieht nur ein Oval)
public class SomeView extends View {
public SomeView(Context context) {
super(context);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
RectF aRect = new RectF();
aRect.left = getPaddingLeft();
aRect.top = getPaddingTop();
aRect.right = getWidth() - getPaddingRight();
aRect.bottom = getHeight() - getPaddingBottom();
Paint aPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
aPaint.setColor(Color.GREEN);
canvas.drawOval(aRect, aPaint);
}
}
Aber ich vermisse etwas, weil Klicks nicht die OnClick-Methode aufrufen. Was muss ich noch einrichten?
Können Sie uns Ihren Controls-Klassencode zeigen? – xFighter
Sie haben der Inhaltsansicht der Aktivität nie Controls hinzugefügt? –
@AbdulAhad Ich fügte es der Frage hinzu. – JennyToy