Разработка макета головоломки в Android - PullRequest
6 голосов
/ 05 января 2012

Я новичок в Android.

Я хочу разработать приложение, в котором я могу менять экраны в зависимости от выбранной кнопки.Приложение может иметь более 20 экранов с кнопками или формой ввода.С 1 экрана я должен изменить экран на другой экран.Я думал о FrameLayout, где я могу изменить детей.

У меня не получается запустить.Как будто я создал активность.Каждый мой экран должен превышать какой класс, чтобы я мог добавить его в макет?Как сделать мой первый экран видимым при запуске.

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

ОБНОВЛЕНО:

@ Призрак, из вашего решения Еще 1 вопрос возник в моей голове.Для экранов, где мне нужно только показывать кнопки в определенном формате, я добавил GridView и ButtonAdapter с помощью этот сайт .

Если я добавлю clickListener только в ButtonAdapter, то какЯ передаю параметры в setIntent (FooFooActivity.this ....) ?????У меня есть Conext в ButtonAdapter - я могу настроить его на FooFooActivity, и это может работать.Я могу дать ifs в ButtonAdapter в onclick (), чтобы перейти на нужный экран.Но setIntent может работать так, как я говорю, или что-то в этом роде.Если это может работать, то для многих экранов мой единственный GridView и один класс ButtonAdapter могут выполнять всю работу.

НОВЫЕ ОБНОВЛЕНИЯ ПО испытаниям:

@ Ghost, я пыталсяи обнаружил, что вышеуказанный setIntent (FooFooActivity.this ....) в ButtonAdapter не работает - как в ButtonAdapter, он не найдет область действия для FooFooActivity.this.

  • В моей функции FooFooActivity я не могу установить onclikcListeners для кнопок, добавленных через ButtonAdapter.Я попытался с gridview.getChild (i), но просто не настраивается никоим образом.
  • Я также сделал еще один linearlayout xml (buttonspage.xml) с 6 кнопками и DataActivity, который его использует.Это работает отлично, и при нажатии кнопки также отображается FooFooActivity.
  • Чтобы использовать один и тот же макет buttonspage.xml в нескольких действиях, я установил содержимое FooFooActivity в качестве страницы кнопок и установил его прослушиватели нажатий кнопок.Для 1 кнопки я настроен на выход из приложения и для другой кнопки, чтобы показать DataActivity.

  • Итак, я получил 2 действия, FooFoo, которое показывает DataActivity / Exit & DataActivity, которое возвращается в FooFoo.Это цикл, который начинается и заканчивается FoofooActivity.Если я сначала нажму «Выход», то выйдет.Но если я нажимаю «Выход» после отображения DataActivity, то он просто не выходит и показывает только DataActivity.Это то, что я не могу использовать один и тот же макет в нескольких видах деятельности?Или я где-то ошибаюсь (сомневаюсь)?Тот же макет страницы кнопок, который я использовал на 10-12 страницах, за исключением разного текста кнопок и событий.Так думали для Пишите один раз, используйте несколько раз .Также есть возможность динамически менять стили кнопок всех этих страниц кнопок.

Спасибо

1 Ответ

12 голосов
/ 05 января 2012

Что касается вашего первого экрана , он зависит от активности и запускается непосредственно при запуске проекта. Например, если у вас есть проект с именем FooFoo , то при компиляции / сборке вашего проекта Android сам Android называет первый класс как FooFooActivity (т. Е. Если вы разрешили android создать активность из этого). Конечно, вы можете переименовать , это тогда и там само. Итак, как только вы скомпилируете свой пользовательский интерфейс в файле main.xml по умолчанию и вернетесь к своему java-файлу FooFooActivity, внутри метода onCreate будет определенная строка. Эта строка setContentView(R.layout.main); Эта строка устанавливает представление содержимого , присутствующего внутри этого main.xml файла. Когда вы запускаете программу и запускаете эмулятор, эмулятор отображает ваш main.xml, если ваш проект не содержит компиляцию или ошибок времени выполнения .

Теперь перейдем к 20+ макетам : вы можете иметь их все в папке макетов. Назначьте по крайней мере один button на каждом экране, который приведет вас к некоторому экрану, скажем «XYZ», и давайте предположим, что имя класса - «ABC». Предположим также, что ваш класс FooFooActivity переводит вас в этот класс ABC. Следующие шаги помогут вам выполнить навигационную часть.

I. Внутри onCreate метода вашего класса FooFooActivity у вас уже есть setContentView. Теперь, после этой строки, добавьте следующие строки:

 Button button = (Button)findViewById(R.id.button1);
    button.setOnClickListener(new View.OnClickListener() 
            {
                public void onClick(View v) 
                {
                    Intent intent = new Intent(FooFooActivity.this, ABC.class);
                    startActivity(intent);  
                }
            });

По Передав намерение , вы можете направить себя / своего пользователя к нужному экрану / деятельности.

II. Помните, что в вашем классе ABC подразумевайте тот же метод onCreate и поместите свой XYZ-макет в setContentView следующим образом: setContentView(R.layout.XYZ);

III. В вашем файле манифеста, после вашего

 <activity
            android:label="@string/app_name"
            android:name=".FooFooActivity" >


            <intent-filter >
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

добавить следующее:

<activity 
            android:name=".ABC"
            android:label="@string/app_name"
            >
        </activity>

Как только вы закончите с этими шагами, запустите вашу программу.

Обратите внимание, что это просто для отображения 2 экрана для вашего пользователя. Вам нужно повторить это более 20 раз. Я не знаю / не вижу другого пути.

Что касается ваших макетов, я бы предложил вам придерживаться Относительный макет или Линейный макет . Как правило, большинство «нормальных» макетов может быть достигнуто с помощью одного из них или их комбинации. Если вы хотите больше, вы всегда можете найти помощь на сайте разработчиков Android или Stack Overflow . Во всяком случае, есть много других вещей, которые я не смог здесь объяснить, но собираюсь в свое время. Вы всегда можете обратиться к великим книгам, таким как Hello Android , Программирование Android и Learning Android . Даже CommonsWare - у Марка Мерфи есть его набор книг, которые довольно популярны. Вы всегда можете начать с любого из них.

Надеюсь, это поможет. Всего наилучшего!

РЕДАКТИРОВАТЬ В СООТВЕТСТВИИ С ВАШИМ ОБНОВЛЕНИЕМ:

Конечно, он вернет последнее действие, потому что я предполагаю, что у вас есть следующий фрагмент кода с вашей кнопкой выхода:

Button exit = (Button)findViewById(R.id.button2);
        exit.setOnClickListener(new OnClickListener() 
        {

            public void onClick(View v) 
            {
                finish();

            }
        });

Итак, в основном вы заканчиваете эту конкретную ABC / Main Activity. Это означает, что Android перенесет вас на предыдущий экран / активность. Это все. Если вы сохраните один и тот же макет и планируете использовать его для различных действий, все просто запутается. С двумя экранами / действиями это достаточно запутанно для вас. Представьте, что может случиться с 20+. Ну, в конечном итоге дизайн остается за вами. Это все, что я могу сказать.

...