Cannot resolve constructor in intent

2243 views java
7

I am trying to edit this game code and call a second activity in //Show Result in order to go to another screen when the game is over. There's an error "cannot resolve contructor". enter image description here

I think the problem is with the intent but I am not really sure about where I can put it. Can you help me? Thank you

This is the GameView code

import android.annotation.SuppressLint;
import android.app.Activity;

import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Typeface;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.content.Intent;


public class GameView extends View {

    // Canvas
    private int canvasWidth;
    private int canvasHeight;

    // J
    //private Bitmap j;
    private Bitmap j[] = new Bitmap[2];
    private int jX = 10;
    private int jY;
    private int jSpeed;

    // Blue Ball
    private int blueX;
    private int blueY;
    private int blueSpeed = 15;
    private Paint bluePaint = new Paint();

    // Black Ball
    private int blackX;
    private int blackY;
    private int blackSpeed = 20;
    private Paint blackPaint = new Paint();

    // Background
    private Bitmap bgImage;




    // Score
    private Paint scorePaint = new Paint();
    private int score;

    // Level
    private Paint levelPaint = new Paint();

    // Life
    private Bitmap life[] = new Bitmap[2];
    private int life_count;

    // Status Check
    private boolean touch_flg = false;


    public GameView(Context context) {
        super(context);

        j[0] = BitmapFactory.decodeResource(getResources(), R.drawable.jun1);
        j[1] = BitmapFactory.decodeResource(getResources(), R.drawable.jun2);

        bgImage = BitmapFactory.decodeResource(getResources(), R.drawable.bg);

        bluePaint.setColor(Color.BLUE);
        bluePaint.setAntiAlias(false);

        blackPaint.setColor(Color.BLACK);
        blackPaint.setAntiAlias(false);

        scorePaint.setColor(Color.BLACK);
        scorePaint.setTextSize(32);
        scorePaint.setTypeface(Typeface.DEFAULT_BOLD);
        scorePaint.setAntiAlias(true);

        levelPaint.setColor(Color.DKGRAY);
        levelPaint.setTextSize(32);
        levelPaint.setTypeface(Typeface.DEFAULT_BOLD);
        levelPaint.setTextAlign(Paint.Align.CENTER);
        levelPaint.setAntiAlias(true);

        life[0] = BitmapFactory.decodeResource(getResources(), R.drawable.heart);
        life[1] = BitmapFactory.decodeResource(getResources(), R.drawable.heart_g);

        // First position.
        jY = 500;
        score = 0;
        life_count = 3;
    }

    @Override
    protected void onDraw(Canvas canvas) {

        canvasWidth = canvas.getWidth();
        canvasHeight = canvas.getHeight();

        canvas.drawBitmap(bgImage, 0, 0, null);

        // Bird
        int minBirdY = j[0].getHeight();
        int maxBirdY = canvasHeight - j[0].getHeight() * 3;

        jY += jSpeed;
        if (jY < minBirdY) jY = minBirdY;
        if (jY > maxBirdY) jY = maxBirdY;
        jSpeed += 2;

        if (touch_flg) {
            // Flap wings.
            canvas.drawBitmap(j[1], jX, jY, null);
            touch_flg = false;
        } else {
            canvas.drawBitmap(j[0], jX, jY, null);
        }


        // Blue
        blueX -= blueSpeed;
        if (hitCheck(blueX, blueY)) {
            score += 10;
            blueX = -100;
        }
        if (blueX < 0) {
            blueX = canvasWidth + 20;
            blueY = (int) Math.floor(Math.random() * (maxBirdY - minBirdY)) + minBirdY;
        }
        canvas.drawCircle(blueX, blueY, 10, bluePaint);


        // Black
        blackX -= blackSpeed;
        if (hitCheck(blackX, blackY)) {
            blackX = -100;
            life_count--;
            if (life_count == 0) {

                // Show Result
                Intent i = new Intent(this, result.class);
                i.putExtra("SCORE", score);
               }
        }
        if (blackX < 0) {
            blackX = canvasWidth + 200;
            blackY = (int) Math.floor(Math.random() * (maxBirdY - minBirdY)) + minBirdY;
        }
        canvas.drawCircle(blackX, blackY, 20, blackPaint);


        // Score
        canvas.drawText("Score : " + score, 20, 60, scorePaint);

        // Level
        canvas.drawText("Lv.1", canvasWidth / 2, 60, levelPaint);

        // Life
        for (int i = 0; i < 3; i++) {
            int x = (int) (560 + life[0].getWidth() * 1.5 * i);
            int y = 30;

            if (i < life_count) {
                canvas.drawBitmap(life[0], x, y, null);
            } else {
                canvas.drawBitmap(life[1], x, y, null);
      

answered question

1 Answer

12

View doesn't extend the Context class, which Intent's constructor needs for what you're doing.

Use

Intent i = new Intent(getContext(), result.class);

in your View class.

posted this

Have an answer?

JD

Please login first before posting an answer.