繁体   English   中英

我无法将视图添加到XML布局

[英]I can't add my view to XML layout

我在Android Studio上编写2D Android游戏。问题是我在Customer类中创建了MyView对象。 而且我无法将此视图(MyView)添加到activity_customer.xml文件。 我这样尝试过,但是在activity_customer.xml中没有看到MyView对象:

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

您是否为视图添加了多个构造函数?

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM