Ошибка на Specifi c Номер строки - Android Studio - PullRequest
0 голосов
/ 05 февраля 2020

Независимо от того, как я изменяю эту указанную строку c, даже если я ничего не добавляю в нее, не оставляю комментарий, не удаляю весь код вместе, сообщение об ошибке постоянно сообщает мне, что эта строка вызывает ошибку. Я даже пытался удалить класс и скопировать его в новый, но все равно та же строка цифр - ошибка.

Код с выделенной строкой ошибки (109):

package com.example.president;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;

public class Game extends AppCompatActivity implements View.OnClickListener {


    private Manager gManager;
    Player p1,p2,p3;
    private ImageView[] hand;
    private ImageView[] curr;
    private ImageView[] next= new ImageView[3];
    private int[] turn = {0, 1, 2};
    private int cthrow;
    public int[] cards =
            {
                    R.drawable.c3,
                    R.drawable.c4,
                    R.drawable.c5,
                    R.drawable.c6,
                    R.drawable.c7,
                    R.drawable.c8,
                    R.drawable.c9,
                    R.drawable.c10,
                    R.drawable.c11,
                    R.drawable.c12,
                    R.drawable.c13,
                    R.drawable.c1,
                    R.drawable.c2,
                    R.drawable.h3,
                    R.drawable.h4,
                    R.drawable.h5,
                    R.drawable.h6,
                    R.drawable.h7,
                    R.drawable.h8,
                    R.drawable.h9,
                    R.drawable.h10,
                    R.drawable.h11,
                    R.drawable.h12,
                    R.drawable.h13,
                    R.drawable.h1,
                    R.drawable.h2,
                    R.drawable.s3,
                    R.drawable.s4,
                    R.drawable.s5,
                    R.drawable.s6,
                    R.drawable.s7,
                    R.drawable.s8,
                    R.drawable.s9,
                    R.drawable.s10,
                    R.drawable.s11,
                    R.drawable.s12,
                    R.drawable.s13,
                    R.drawable.s1,
                    R.drawable.s2,
                    R.drawable.d3,
                    R.drawable.d4,
                    R.drawable.d5,
                    R.drawable.d6,
                    R.drawable.d7,
                    R.drawable.d8,
                    R.drawable.d9,
                    R.drawable.d10,
                    R.drawable.d11,
                    R.drawable.d12,
                    R.drawable.d13,
                    R.drawable.d1,
                    R.drawable.d2,
                    R.drawable.j1,
                    R.drawable.j2
            };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_game);

        p1 = new Player("p1");
        p2 = new Player("p2");
        p3 = new Player("p3");

        this.hand = new ImageView[18];
        String str;
        int resId;
        int i;
        for (i=0;i<hand.length;i++)
        {
            str = "card"+i;
            resId = getResources().getIdentifier(str, "id", getPackageName());
            hand[i]= (ImageView)findViewById(resId);
            hand[i].setOnClickListener(this);
        }
        for (i=0; i<4; i++)
        {
            str="board"+i;
            resId = getResources().getIdentifier(str, "id", getPackageName());
            curr[i]= (ImageView)findViewById(resId);
            curr[i].setOnClickListener(this);
        }

        this.gManager = new Manager(this, p1, p2, p3);

        this.gManager.handingDeck(p1, p2, p3);
[[[LINE 109]]]
        startGame(p1, p2, p3);

    }

    public void startGame(Player p1, Player p2, Player p3) {

        Player p=p1;
        int i;
        for (i=0; i < 18; i++) {
            hand[i].setImageResource(cards[p.getHand().get(i).getIndex()]);
        }
        String text = p1.getHand().toString();
        TextView change = (TextView)findViewById(R.id.textView);
        change.setText(text);
    }

    @Override
    public void onClick(View v) {
        int i, cnum=0, t=0, resId;
        boolean found = false;
        Player p=p1;
        cthrow=1;
        for (i = 0; i < 18 && (!(found)); i++)
        {
            if (v.getId() == hand[i].getId())
            {
                String str="card"+cnum;
                resId=getResources().getIdentifier(str, "id", getPackageName());
                next[turn[t]]= (ImageView)findViewById(resId);
                found=true;
                curr[cthrow].setImageResource(cards[p.getHand().get(i).getIndex()]);
                p.getHand().remove(i);
                next[turn[t]].setVisibility(View.INVISIBLE);
                if(cnum<10)
                    cnum=18-cnum;
                else
                    cnum=18-cnum+1;
                cthrow++;
            }
        }
    }
}

Как видите, линия даже пуста.

The error

Ответы [ 2 ]

1 голос
/ 06 февраля 2020

Как указано в комментариях, ошибка действительно происходит здесь:

HERE>> curr[i]= (ImageView)findViewById(resId);
curr[i].setOnClickListener(this);

Но это произойдет в любой строке, где вы используете curr, поскольку она не инициализирована.

Для вашей конкретной ошибки c: Когда строка ошибки не меняется, даже если вы намеренно изменили свой код, единственный правдоподобный ответ - только один. Фактический работающий код - старый . Так что вам нужно обновить sh. Как? это зависит от того, где и как вы его выполняете, но прямым подходом будет постепенное выполнение следующих шагов (тестирование, если что-то меняется между тем):

  • Перестройте свой проект (используя кнопку ide rebuild или по командной строке)
  • Чистая сборка вашего проекта (ide или cmd, как указано выше)
  • Повторное развертывание приложения (в случае android приложения «переустановите» его на устройстве, где вы тестируем; эмулятор или телефон)
  • Удалите и удалите запущенное в данный момент приложение (и повторите пункты 2 и 3)
  • Перезагрузите тестовое устройство (эмулятор / телефон и повторите пункты 2 и 3)
  • Перезагрузите IDE (если вы не уверены, что все его процессы перезагружены, перезагрузите p c)
  • Удалите любой промежуточный файл сборки / файл кэша, который мог храниться в вашем ide (и повторите 2 & 3)
  • Ничего не получалось. Попробуйте различные комбинации вышеуказанных решений
  • Если вы здесь, начните думать о самых глупых вещах и проявите творческий подход, например:
    • я устанавливаю приложение?
    • есть Я сохранил измененные файлы?
    • подключен ли телефон?
    • Я изменяю файлы в нужном проекте?
    • ...

Надеюсь, это поможет

0 голосов
/ 05 февраля 2020

вы неправильно инициализировали массив, используя new , он инициализирует массив и создаст память для этого массива.

- так что правильный способ инициализации и добавления значений в массив следующий.

public int[] cards = new int[]{ add your Drawbles here };

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...