Я только недавно начал изучать разработку 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, и он работает. Почему библиотека не работает?
Я что-то упустил? Разве я не понимаю наследство? Моя андроид студия проклята?