Форум программистов, компьютерный форум, киберфорум
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 54, средняя оценка - 4.69
sm100
2 / 2 / 0
Регистрация: 30.12.2012
Сообщений: 29
#1

Как изменить setContentView - Программирование Android

06.01.2013, 13:43. Просмотров 7547. Ответов 9
Метки нет (Все метки)

Пытаюсь поменять 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;
         }
       }
     }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.01.2013, 13:43
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как изменить setContentView (Программирование Android):

Как выполнить setContentView из другого класса? - Программирование Android
Есть класс "Core" который является "точкой входа" в приложение, и есть класс в котором я меняю контент, но если я просто допишу "extends...

SetContentView - Программирование Android
Можно ли метод setContentView(R.layout.main) вызывать в методе скажем onResume() или onNewIntent() в активити ??или только можно в...

SetContentView и layoutParams - Программирование Android
Почему когда я не передаю lp в setContentView, lin занимает весь экран, словно у него MATCH_PARENT, хотя я для него через setLayourParams...

Обязательно ли вызывать setContentView? - Программирование Android
Необходимо сделать активность (first), которая будет, например, заставкой с подсказками перед основной активностью (second). Но...

Как изменить шрифт? - Программирование Android
ребят, вопрос а как шрифт поменять и название можно, какие папки отвечают за это и строчки?

Как программно изменить - Программирование Android
Здравствуйте! Не так давно учусь программировать под Андроид и столкнулся с такой проблемой: Я хочу программно создать n кнопок и...

9
korep
52 / 45 / 9
Регистрация: 06.01.2013
Сообщений: 600
06.01.2013, 18:20 #2
кхм....
как я понял вы используя эклипс здесь своеобразное навешивание действий на кнопки
при создании проекта у вас есть исходная функция которая загружает исходный layout
Так вот в ней необходимо писать
Java
1
2
Button MyButton = (Button)findobjectbyid(R.id.ид_кнопки);
MyButton.setOnClickListener(имя_обработчика);
а потом ниже описываете работу обработчика

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

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


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

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

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

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

Осталось разобраться, как закрыть подчиненную форму.
1
korep
52 / 45 / 9
Регистрация: 06.01.2013
Сообщений: 600
06.01.2013, 21:04 #9
почитаем-почитаем
0
MegaSinner
91 / 87 / 3
Регистрация: 09.04.2010
Сообщений: 746
14.01.2013, 16:20 #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;
             \\и так на остальные кнопки кейсами.
         }
    }
0
14.01.2013, 16:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.01.2013, 16:20
Привет! Вот еще темы с ответами:

Как программно изменить textview? - Программирование Android
Мне нужно изменить TextView на многострочный текст, используя переменную. . Пример ниже. String gtext = &quot;elements/123.txt&quot;; try...

Как изменить AppTheme в eclipse? - Программирование Android
В самом начале указал не тот фон. Теперь не знаю как изменить. В манифесте написано просто android:theme=&quot;@style/AppTheme&quot; Теперь...

Как изменить тему приложения? - Программирование Android
У меня установлена темная тема Material, но я не могу понять, как мне сменить ее на светлую? Вот тема приложения: &lt;style name=&quot;AppTheme&quot;...

ListView - как изменить шрифт? - Программирование Android
Всем привет! Мне необходимо изменить шрифт элементов списка. Для TextView меняла так: textView = (TextView)...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.