Как использовать Gallery View в Android, но на другой странице - PullRequest
0 голосов
/ 03 июля 2011

У меня есть 2 файла макета в папке res / layout: main.xml и page2.xml.В main.xml у меня есть приветственная информация и кнопка, которая начинает

setContentView(R.layout.page2);

, чтобы перейти на page2.xml.

Она работала нормально, пока я не решил добавить представление галереи на странице 2.xml.

Когда я начинаю с ContentView до page2, как показано ниже, все в порядке.

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.page2); 
    Gallery g = (Gallery) findViewById(R.id.gallery);       
    g.setAdapter(new ImageAdapter(this));

Но когда я вызываю main.xml первым, чтобы показать, может начаться страница ...

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main); 
    Gallery g = (Gallery) findViewById(R.id.gallery);       
    g.setAdapter(new ImageAdapter(this));

приложение возвращает ошибку.Я знаю, что проблема с контекстом в строке

    g.setAdapter(new ImageAdapter(this));

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

1 Ответ

1 голос
/ 03 июля 2011

Из вашего объяснения не совсем ясно (логи никогда не болят), но я думаю, что вы получаете исключение нулевого указателя, потому что gallery не определено в вашем main.xml.Есть два решения для вашей проблемы:

  1. Разделите ваши две "страницы" на два действия.Это гораздо более естественный способ иметь дело с вещами.Попробуйте повернуть телефон / эмулятор, и вы поймете, что я имею в виду.Когда пользователь нажимает кнопку или что-то еще, звоните startActivity(), а затем звоните finish(), чтобы ваша приветственная деятельность не оставалась без внимания.
  2. Проблема в том, что findViewById() действует на все, что "видно"в деятельности прямо сейчас.Поскольку вы сделали setContentView(main), ваш Gallery не будет там.Попробуйте «получить» галерею только после вызова «изменить страницы» (setContentView(R.layout.page2);).

Однако я настоятельно советую вам воспользоваться первым вариантом.

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