Переключение видов / макетов - PullRequest
1 голос
/ 14 декабря 2010

Ну, у меня есть еще одна проблема, которую я не могу найти решение ... У меня есть приложение, которое загружает файл main.xml при запуске, конечно.В нем несколько кнопок, и я хочу, чтобы кнопки перенесли меня в другой файл XML.Я просто использовал для этого метод setContentView (R.layout.newlayout.xml), и он прекрасно работает.Проблема приходит после этого.Если я ссылаюсь на любую из кнопок или других объектов в новом макете, приложение даже не завершит загрузку, пока не произойдет ошибка и не закроется в эмуляторе.Однако, если я уберу все ссылки на объекты, приложение будет работать нормально.Я могу перемещаться по TO новым макетам, но их кнопки ничего не могут сделать.Нужно ли создавать отдельный файл Java для каждого макета?Или я все делаю не так?Я стараюсь быть как можно более конкретным ... Полагаю, вы могли бы сказать, что мне нужно иметь разные "страницы" в моем приложении, как на веб-сайте.

Ответы [ 3 ]

1 голос
/ 15 декабря 2010

Кнопки и представления могут ссылаться только на те, которые упомянуты в текущем файле SetContentView ().

Вы можете проверить это, создав кнопку и инициализировав ее в R.id ... без настройки представления содержимого .. U получит принудительное закрытие ..

так что, если вы измените XML-файл, то снова начнете инициализацию ...

1 голос
/ 15 декабря 2010

Я думаю, что то, что вы пытаетесь сделать, лучше всего решить с помощью нескольких файлов Java, каждый из которых определяет свою собственную активность Android.

Хотя возможно иметь несколько макетов / представлений в одном действии, это, как правило, сделает код более сложным и трудным для чтения / отладки в будущем. Имея каждый «экран» в своем собственном файле, вам будет немного проще управлять всеми различными представлениями, которые вам нужно жонглировать.

0 голосов
/ 15 декабря 2010

Хорошо, для всех, кто сталкивался с такой же проблемой, и не не понял, как это сделать, как я сказал в своем комментарии к Ylebre, мы с моим сотрудником наконец-то обнаружили, как это сделать. , Во-первых, мы добавили

implements OnClickListener

в класс, после

extends Activity

Затем мы создали новый файл Java, и в начале файла он называется

setContentView(R.layout.newlayout);

вместо основного. Затем мы сделали кнопку следующим образом:

Button button1 = (Button) findViewById(R.id.button01;
button1.setOnClickListener(this);

затем в коде:

public void onClick(View v) {
        switch(v.getId()) {
            case R.id.button01:
                startActivity(new Intent(this, NEWJAVAFILE.class));
                break;

        }
    }

И это все! Мы просто скопировали и вставили этот код в NEWJAVAFILE, изменили имена и тому подобное, и мы могли свободно перемещаться вперед и назад. Как сказал Илебре, весь код для новой деятельности находится в NEWJAVAFILE.java. ОН, и не забудьте добавить имя файла Java в манифест внутри тегов:

<activity android:name=".NEWJAVAFILE">        
    </activity>

теперь все кажется таким простым!

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