我正在Android Studio上编写2D Android游戏。我的问题是我在MyView
课程中创建了一个Customer
对象。我无法将此视图(MyView)添加到activity_customer.xml
文件中。我试过这样但MyView
对象在activity_customer.xml
没有看到:
activity_customer.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/relativeLayout"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.mehmet.catchtheball.main">
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:text="Button" />
<com.example.mehmet.catchtheball.MyView<!--I add MyView class, but it doesn't work -->
android:id="@+id/view"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>
这是我的Customer.java:
package com.example.mehmet.catchtheball;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class Customer extends AppCompatActivity {
int playColumn;
int playRow;
private char player = 'X';
public int win;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
MyView a = new MyView(this);
setContentView(R.layout.activity_customer);//This line give error
//in my phone like "The
// application stopped"
.
.
.
}
这是我的MyView.java:
package com.example.mehmet.catchtheball;
import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.DisplayMetrics;
import android.view.View;
public class MyView extends View {
public static Cell[][] board;
public static int size = Integer.parseInt(main.editSize.getText().toString());
int radius = 50;
public MyView(Context context) {
super(context);
DisplayMetrics displayMetrics = new DisplayMetrics();
((Activity)context).getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
int height = displayMetrics.heightPixels;
int width = displayMetrics.widthPixels;
board = new Cell[size][size];
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
board[i][j] = new Cell();
}
}
for (int k = 0, l = 400; k < size; k++, l = l + (radius * 2) + 15) {
for (int i = width / 2 - (size / 2 * 15 + (size - 1) * radius), j = 0; j < size; i = i + (radius * 2) + 15, j++) {
board[k][j].setterxPos(i);
board[k][j].setteryPos(l);
board[k][j].setterData('.');
board[k][j].setterColumn(j);
board[k][j].setterRow(k);
}
}
}
.
.
.
答案 0 :(得分:0)
您是否为视图添加了多个构造函数?
constructor(context: Context) : super(context){ init() }
constructor(context: Context, attrSet : AttributeSet) : super(context, attrSet){ init() }
constructor(context: Context, attrSet: AttributeSet, defStyleAttributeSet : Int) : super(context, attrSet, defStyleAttributeSet){ init() }