Форум программистов, компьютерный форум CyberForum.ru

Как изменить setContentView - Android

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 54, средняя оценка - 4.69
sm100
2 / 2 / 0
Регистрация: 30.12.2012
Сообщений: 29
06.01.2013, 13:43     Как изменить setContentView #1
Пытаюсь поменять layout и у меня ни чего не получается, то есть кнопки не кликабельны. В первый раз layout меняется, а дальше ни одно событие не отрабатывается


Подскажите, куда следует копать? Подозреваю, что просто так использовать setContentView нельзя, а что тогда можно?


Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public void onClick(View v) {
         // по id определеяем кнопку, вызвавшую этот обработчик @+id/button_game
         switch (v.getId()) {
         case R.id.button_game:
             setContentView(R.layout.activity_main);
           break;
         case R.id.button_next:
             setContentView(R.layout.v1); 
           break;
         case R.id.button_again:
             setContentView(R.layout.v2);
           break;
         }
       }
     }
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
korep
 Аватар для korep
47 / 40 / 9
Регистрация: 06.01.2013
Сообщений: 566
06.01.2013, 18:20     Как изменить setContentView #2
кхм....
как я понял вы используя эклипс здесь своеобразное навешивание действий на кнопки
при создании проекта у вас есть исходная функция которая загружает исходный layout
Так вот в ней необходимо писать
Java
1
2
Button MyButton = (Button)findobjectbyid(R.id.ид_кнопки);
MyButton.setOnClickListener(имя_обработчика);
а потом ниже описываете работу обработчика

Java
1
2
3
OnClickListener имя_обработчика = new OnClickListener{
и т.д. в эклипс основа кода появится сама
}
Good-bad man
 Аватар для Good-bad man
254 / 232 / 17
Регистрация: 31.10.2010
Сообщений: 504
06.01.2013, 19:04     Как изменить setContentView #3
По-моему, после каждого setContentView надо заново искать все элементы (findViewById) и вешать на них обработчики событий. А зачем вам вообще менять layout?
sm100
2 / 2 / 0
Регистрация: 30.12.2012
Сообщений: 29
06.01.2013, 19:07  [ТС]     Как изменить setContentView #4
Спасибо за ответ. Но, я хотел спросить несколько другую вещь. Как реагировать на нажатие на кнопку я освоил.

Меня же интересует как я могу менять содержимое экрана

setContentView(R.layout.v1);
setContentView(R.layout.v2);


Обычно работают с одним layout как вот здесь: setContentView(R.layout.activity_main);
Javascript
1
2
3
4
5
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
        this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.activity_main);
А мне нужно рабоать с несколькими формами, на одной, например, будут установки, на другой рабочая форма.

Спасибо.
korep
 Аватар для korep
47 / 40 / 9
Регистрация: 06.01.2013
Сообщений: 566
06.01.2013, 19:11     Как изменить setContentView #5
в принципе правильно меняете, но лучше не менять а вставкой вставить другие слои и изменять их отображение (Visibility)
sm100
2 / 2 / 0
Регистрация: 30.12.2012
Сообщений: 29
06.01.2013, 19:42  [ТС]     Как изменить setContentView #6
korep, подскажите как вставлять другие слои. Хотя бы скажите ключевые слова по которым нужно искать ответ.


Так же я получил вот такой совет... буду разбираться...:

HTML5
1
2
3
4
5
6
7
Обычно делают так: 1 Activity = 1 layout. Открыть новую активити можно так:
 
startActivity(new Intent(this, OtherActivity.class));
 
Вернуться в предыдущее активити пользователь может по нажатию кнопки "Назад" на устройстве. Если нужно принудительно вернуться на предыдущую активити - можно вызвать метод
 
finish();
korep
 Аватар для korep
47 / 40 / 9
Регистрация: 06.01.2013
Сообщений: 566
06.01.2013, 19:48     Как изменить setContentView #7
слева, там где у вас объекты palette -> Layouts -> Include Other Layout кидаете на форму там будет выбрать/создать новый слой, Include'у даете id и работаете с этим id (visible/invisible), а всю работу с элементами осуществляете на новом слое
sm100
2 / 2 / 0
Регистрация: 30.12.2012
Сообщений: 29
06.01.2013, 21:00  [ТС]     Как изменить setContentView #8
Помог вот этот пример:

http://megadarja.blogspot.ru/2008/10/android-2.html

В примере показано как открывать слои. Как передавать данные. Есть Zip архив, который можно импортировать и пощупать.

Осталось разобраться, как закрыть подчиненную форму.
korep
 Аватар для korep
47 / 40 / 9
Регистрация: 06.01.2013
Сообщений: 566
06.01.2013, 21:04     Как изменить setContentView #9
почитаем-почитаем
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.01.2013, 16:20     Как изменить setContentView
Еще ссылки по теме:

Как программно изменить textview? Android
Как изменить цвет у Status Bar Android
Android Как программно изменить
Как изменить фон NavigationDrawer? Android
Как изменить тему приложения? Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
MegaSinner
 Аватар для MegaSinner
91 / 91 / 3
Регистрация: 09.04.2010
Сообщений: 746
14.01.2013, 16:20     Как изменить setContentView #10
К черту OnClick Listener - он не будет работать если переключаться между леяутами. Делай так:
XML
1
2
3
4
    <Button
            android:id="@+id/Button03"
            .....
            android:onClick="Click"/>
И создай соответственную функцию Click:
Java
1
2
3
4
5
6
7
8
9
    public  void Click(View view)
    {
        switch (view.getId()) {
            case R.id.Button03:
              \\ду самтхинг
              break;
             \\и так на остальные кнопки кейсами.
         }
    }
Yandex
Объявления
14.01.2013, 16:20     Как изменить setContentView
Ответ Создать тему
Опции темы

Текущее время: 12:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru