Я новичок в android, и я пытаюсь вызвать метод, который перемещает круг, нарисованный пользовательским представлением, используя холст на 10 пикселей. Когда я пытаюсь вызвать упомянутый метод, я получаю исключение с нулевым указателем, и я не могу понять, почему. Вот что у меня есть.Android - Получение исключения из null-указателя при вызове пользовательского метода просмотра
Основная деятельность
public class CustomView extends Activity {
XView xv;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_customview);
}
public void moveUp(View view){
xv.setY(view);
}
}
Обычай Просмотр
public class XView extends View implements View.OnClickListener{
private Paint mPaint = new Paint();
int oX = 200;
int oY = 200;
public XView(Context context, AttributeSet attrs){
super(context, attrs);
//setOnClickListener(this);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
mPaint.setStyle(Paint.Style.FILL);
mPaint.setColor(Color.MAGENTA);
canvas.drawColor(Color.WHITE);
canvas.drawCircle(oX, oY, 50, mPaint);
}
public void onClick(View view){
oX=oX+10;
view.postInvalidate();
}
public void setY(View view)
{
oY=oY+10;
view.postInvalidate();
}
}
в XML для основной деятельности
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".customview"
android:orientation="vertical">
<com.mycompany.customview.XView
android:layout_width="wrap_content"
android:layout_height="200dp" />
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_alignParentTop="true"
android:layout_alignLeft="@+id/button2"
android:layout_alignStart="@+id/button2"
android:onClick="moveUp"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:layout_alignTop="@+id/button2"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/button"
android:layout_centerHorizontal="true"
android:id="@+id/button2" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_centerVertical="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:id="@+id/button" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:id="@+id/button5"
android:layout_alignParentBottom="true"
android:layout_alignLeft="@+id/button2"
android:layout_alignStart="@+id/button2" />
</RelativeLayout>
Благодаря
Спасибо, что сделал трюк. – user798774
Что делать, если пользовательский вид добавляется через код и его нет в XML-макете? –