Новичок - сила близка по простому методу

1

xml и logcat теперь добавлены, теперь пользовательский код просмотра, к сожалению, я ушел от разработки компьютера, поэтому я не могу проверить ваши предложения, @jems, у меня может быть неправильный конструктор для моего пользовательского представления? @Falmarri, я думаю, что цель сборки равна 2,2

Надеюсь, простую вещь, о которой я не знаю:

У меня есть основная игровая активность, и это вызывает класс, который я расширил из класса представления. Вот он, в рабочем виде:

public class guappsXOMainGame extends Activity {

private static final int cellsX=10;
private static final int cellsY=10;

private guappsXOBoardView mBoardView;



@Override
public void onCreate(Bundle bund) {
    super.onCreate(bund);


    setContentView(R.layout.gamescreen);//loads xml layout called gamescreen
    mBoardView = (guappsXOBoardView) findViewById(R.id.boardview);

}

Все прошло хорошо, показывая мой игровой экран, пока я не попробовал следующее, что дает силу:

public void onCreate(Bundle bund) {
    super.onCreate(bund);

    setContentView(R.layout.gamescreen);//loads xml layout called gamescreen
    mBoardView = (guappsXOBoardView) findViewById(R.id.boardview);
    mBoardView.hello();//problem line



}

Я хочу запустить метод, который получит некоторую информацию из класса guappsxoboardview, и это был тестовый пример. Метод выглядит следующим образом:

    public void hello(){

    int x = 1;

}

LogCat говорит:

01-29 20:50:46.415: INFO/ActivityManager(60): Starting activity: Intent { cmp=com.guapps/.guappsXOMainGame }
01-29 20:50:46.535: DEBUG/AndroidRuntime(564): Shutting down VM
01-29 20:50:46.535: WARN/dalvikvm(564): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
01-29 20:50:46.566: ERROR/AndroidRuntime(564): FATAL EXCEPTION: main
01-29 20:50:46.566: ERROR/AndroidRuntime(564): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.guapps/com.guapps.guappsXOMainGame}: java.lang.NullPointerException
01-29 20:50:46.566: ERROR/AndroidRuntime(564):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
01-29 20:50:46.566: ERROR/AndroidRuntime(564):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
01-29 20:50:46.566: ERROR/AndroidRuntime(564):     at android.app.ActivityThread.access$2300(ActivityThread.java:125)
01-29 20:50:46.566: ERROR/AndroidRuntime(564):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
01-29 20:50:46.566: ERROR/AndroidRuntime(564):     at android.os.Handler.dispatchMessage(Handler.java:99)
01-29 20:50:46.566: ERROR/AndroidRuntime(564):     at android.os.Looper.loop(Looper.java:123)
01-29 20:50:46.566: ERROR/AndroidRuntime(564):     at android.app.ActivityThread.main(ActivityThread.java:4627)
01-29 20:50:46.566: ERROR/AndroidRuntime(564):     at java.lang.reflect.Method.invokeNative(Native Method)
01-29 20:50:46.566: ERROR/AndroidRuntime(564):     at java.lang.reflect.Method.invoke(Method.java:521)
01-29 20:50:46.566: ERROR/AndroidRuntime(564):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
01-29 20:50:46.566: ERROR/AndroidRuntime(564):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
01-29 20:50:46.566: ERROR/AndroidRuntime(564):     at dalvik.system.NativeStart.main(Native Method)
01-29 20:50:46.566: ERROR/AndroidRuntime(564): Caused by: java.lang.NullPointerException
01-29 20:50:46.566: ERROR/AndroidRuntime(564):     at com.guapps.guappsXOMainGame.onCreate(guappsXOMainGame.java:38)
01-29 20:50:46.566: ERROR/AndroidRuntime(564):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
01-29 20:50:46.566: ERROR/AndroidRuntime(564):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
01-29 20:50:46.566: ERROR/AndroidRuntime(564):     ... 11 more
01-29 20:50:46.596: WARN/ActivityManager(60):   Force finishing activity com.guapps/.guappsXOMainGame
01-29 20:50:46.596: WARN/ActivityManager(60):   Force finishing activity com.guapps/.guappsXOStart
01-29 20:50:46.745: DEBUG/dalvikvm(60): GC_FOR_MALLOC freed 7966 objects / 468848 bytes in 99ms
01-29 20:50:47.108: WARN/ActivityManager(60): Activity pause timeout for HistoryRecord{44009a08 com.guapps/.guappsXOMainGame}
01-29 20:50:48.375: INFO/Process(564): Sending signal. PID: 564 SIG: 9
01-29 20:50:48.385: INFO/ActivityManager(60): Process com.guapps (pid 564) has died.
01-29 20:50:48.385: INFO/WindowManager(60): WIN DEATH: Window{440530d0 com.guapps/com.guapps.guappsXOStart paused=true}
01-29 20:50:48.445: WARN/InputManagerService(60): Got RemoteException sending setActive(false) notification to pid 564 uid 10032
01-29 20:50:57.482: WARN/ActivityManager(60): Activity destroy timeout for HistoryRecord{43fc4248 com.guapps/.guappsXOStart}
01-29 20:50:57.488: WARN/ActivityManager(60): Activity destroy timeout for HistoryRecord{44009a08 com.guapps/.guappsXOMainGame}

Вот XML для этого:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center_horizontal"
>

<com.guapps.guappsXOBoardView
    android:id="@+id/boardview"
    android:layout_width="match_parent"
    android:layout_height="match_parent"


    />

</LinearLayout>

Надеюсь, я сделал что-то очевидное, спасибо.

Теперь большую часть пользовательского кода просмотра также:

package com.guapps;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.RectF;
import android.util.AttributeSet;
import android.view.View;



public class guappsXOBoardView extends View {

    int screenHeight;
    int screenWidth;
    Context mContext;
    private float leftG;
    private float topG;
    private float rightG;
    private float botG;




    Bitmap boardGrid;




    public guappsXOBoardView(Context context, AttributeSet attrs) {
            super(context);
            requestFocus();


    }


    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec){

        screenWidth = View.MeasureSpec.getSize(widthMeasureSpec);
        screenHeight = View.MeasureSpec.getSize(heightMeasureSpec);

        setMeasuredDimension(screenWidth, screenHeight);


    }

    @Override
    protected void onDraw(Canvas canvas){



        canvas.drawColor(Color.WHITE);


         }
.....
  • 0
    Пожалуйста, оставьте свой полный LogCat.
  • 0
    А также, пожалуйста, опубликуйте свой файл gamescreen.xml. Я думаю, что ошибка здесь, и findViewById (R.id.boardview) возвращает нуль в результате.
Показать ещё 8 комментариев
Теги:

3 ответа

0
Лучший ответ

Спасибо за помощь, я нашел свою ошибку.

Конструктор моего пользовательского представления имеет супер (контекст); вместо super (context, attrs), который вызывал findviewbyid для возврата null.

0

Возможно, попробуйте удалить requestFocus() из конструктора. Зачем вам это нужно?

0

Кажется глупым, но так много людей забывают... Вы добавили активность в манифест?

  • 0
    Это было бы другое сообщение logcat, если бы это было так.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню