Наследование активности не распознается андроид студией - PullRequest
1 голос
/ 08 октября 2019

Я только недавно начал изучать разработку android и решил по этому вопросу следовать Стэнфордским публичным лекциям с зимы 2017 года. На лекции 3 они делятся библиотекой, которая является утилитой для более быстрого и чистого кода, которая находится по адресу на их странице .

Я следовал инструкциям и импортировал его. Это работает, и мне действительно нравится, как это упрощает код. Дело в том, что он делает это, создавая класс, который расширяет AppCompatActivity и улучшает его.

Класс называется SimpleActivity и объявлен как

public abstract class SimpleActivity extends AppCompatActivity implements OnClickListener, OnTouchListener, ... {

Так что, насколько я понимаю, класс SimpleActivity также является действием и должен распознаваться как единое целое. Затем я создаю новое действие с помощью

import stanford.androidlib.SimpleActivity;

public class DeadlyActivity extends SimpleActivity {

public void deadlyMethod(View view)
{
    //dostuff
}

}

Пока все идет хорошо, но когда я перехожу к XML-файлу макета, он не распознает этот класс (DeadlyActivity) как допустимое действие, когда я пытаюсьсвязать событие OnClick с методом класса, как вы делаете с любым другим действием.

<Button
    ...
    android:onClick="deadlyMethod"
>

Он просто говорит: «Не удается разрешить символ« deadlyMethod »». Я нахожу это странным, так как я думал, что это просто простая ссылка на метод, но Android, похоже, не согласен, даже если я могу запустить DeadlyActivity как действие, и метод работает, несмотря на предупреждение.

Intent intent = new Intent(this, DeadlyActivity.class);
startActivity(intent);
//this works, being summoned from MainActivity, which is a plain AppCompatActivity

Далеепроблемы возникают при попытке использовать ключевое слово «this», когда требуется использовать действие в качестве аргумента, поскольку оно не распознает класс как таковой.

Я только что сделал простой тест, заставил DeadlyActivity наследовать от AppCompatActivity,а затем создал новый класс под названием FuriousActivity, который наследуется от DeadlyActivity, и он работает. Почему библиотека не работает?

Я что-то упустил? Разве я не понимаю наследство? Моя андроид студия проклята?

1 Ответ

0 голосов
/ 09 октября 2019

Проблема связана с самой библиотекой, поскольку некоторые из ее импортов недействительны либо из-за текущей итерации Android, либо из-за отсутствия репозиториев на моем конце. Только при чтении объявления java-кода вместо скомпилированной версии ошибки будут отображаться, так как студия android не будет предупреждать ни о одной из них. Класс «SimpleActivity» просто не может разрешить «AppCompatActivity» из-за прерывания импорта и, следовательно, не может работать должным образом.

Это немного грустно, но мне придется рекомендовать не использовать эту библиотеку, если только вы не сможете решить импорт и дважды проверить, что она все еще работает как задумано.

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