如何在 Android 中将 int 传递给我的 onDraw?我的代码有什么问题?
How can I pass an int to my onDraw in Android? Whats wrong in my code?
在我的示例项目中:ondraw需要一个int来从main中绘制activity,当在mainActivity中将参数初始化为1时,它不绘制任何东西,
//class MyView 扩展 View
private int parameter=0;//if i change to 1 it will draw,
//but i want set it from main Activity
public void setParameter(int param)
{
this.parameter=param;
invalidate();
Log.i("tag9", this.parameter+" setParameter");
}
@Override
protected void onDraw(Canvas canvas) {
Log.i("tag9",parameter + " ondraw");
if(this.parameter==0){
return;}
//Drawing code ...
}
//在MainActivity中:
MyView myView = new MyView(this);
myView.setParameter(1);
//Xml代码:
<RelativeLayout ...>
<view
android:layout_width="wrap_content"
android:layout_height="wrap_content"
class="(packagename).MyView"
android:id="@+id/view"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="138dp"/>
</RelativeLayout>
//DDMS
1 setparameter
0 ondraw // its shouldnt be 0;
感谢 Gabe Sechan,
您正在通过 new 创建它。这会创建一个不在任何布局中的新视图。如果要引用 xml 中的视图集,请使用 findViewById – Gabe Sechan
MyView myView = (MyView)this.findViewById(R.id.view);
myView.setParameter(1);
在我的示例项目中:ondraw需要一个int来从main中绘制activity,当在mainActivity中将参数初始化为1时,它不绘制任何东西,
//class MyView 扩展 View
private int parameter=0;//if i change to 1 it will draw,
//but i want set it from main Activity
public void setParameter(int param)
{
this.parameter=param;
invalidate();
Log.i("tag9", this.parameter+" setParameter");
}
@Override
protected void onDraw(Canvas canvas) {
Log.i("tag9",parameter + " ondraw");
if(this.parameter==0){
return;}
//Drawing code ...
}
//在MainActivity中:
MyView myView = new MyView(this);
myView.setParameter(1);
//Xml代码:
<RelativeLayout ...>
<view
android:layout_width="wrap_content"
android:layout_height="wrap_content"
class="(packagename).MyView"
android:id="@+id/view"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="138dp"/>
</RelativeLayout>
//DDMS
1 setparameter
0 ondraw // its shouldnt be 0;
感谢 Gabe Sechan, 您正在通过 new 创建它。这会创建一个不在任何布局中的新视图。如果要引用 xml 中的视图集,请使用 findViewById – Gabe Sechan
MyView myView = (MyView)this.findViewById(R.id.view);
myView.setParameter(1);