Чтобы ответить на ваш вопрос:
Вам нужно позвонить setContentView(R.layout.main)
(или как там называется ваш файл макета), прежде чем вы сможете позвонить findViewById
. Кроме того, ключевое слово final
может испортить ваш код, но, вероятно, проблема не в этом.
Другая, возможно, полезная информация: (Технически вам не нужно ничего читать)
Форматирование вашего кода также очень грязное. Учтите это:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Get intent information
volume_id = getIntent().getStringExtra("volume_id");
language = getIntent().getStringExtra("language");
chapter = getIntent().getIntExtra("chapter")); // Changed from String to int
book = getIntent().getStringExtra("book");
book_id = getIntent().getStringExtra("book_id");
// Find views by ID
Button back = (Button) findViewById(R.id.backButton);
Button next = (Button) findViewById(R.id.forwardButton);
// Click listeners
back.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(), "Back", Toast.LENGTH_LONG).show();
}
});
next.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(), "Next", Toast.LENGTH_LONG).show();
}
});
}
Примечание:
1. Пробелы до и после каждого =
2. Пробелы после круглых скобок приведения типа (например, "(Button)
")
3. Правильный отступ
4. Никаких лишних пустых строк (например, между @Override и public void onClick
5. Полезные комментарии
Это мелочи, которые облегчают чтение вашего кода другими программистами.
Кроме того, вы можете рассмотреть возможность передачи "chapter" как intExtra вместо анализа его из String. Это тратит драгоценную память. Измените поле экземпляра String на int. Наконец, вы можете рассмотреть возможность создания полей экземпляра Buttons для всего класса.