J2J.RU - cовременная система продвижения сайтов
Меню сайта

Категории раздела

Наш опрос
Меня больше интересуют приложения и игры для:
Всего ответов: 22

Файлы
Новые Популярные Лучшие


Теги
Android (34)
uCoz (8)
mobile (3)
sistem (3)
xml (3)
google (2)
html (2)
Oboi (2)
opera (2)
Rest (2)
soap (2)
action (1)
ajax (1)
App2SD (1)
apps (1)
CSS (1)
Ddms (1)
editor (1)
gmail (1)
gobook (1)
java (1)
legend (1)
Lite (1)
live (1)
mp3 (1)
mrtm (1)
Muse (1)
ninja (1)
pdf (1)
php (1)
Root (1)
sensor (1)
shazam (1)
sql (1)
thread (1)
touch (1)
UI (1)
Widget (1)
Worms (1)
Xplore (1)
Zirco (1)

RSS
  
Новостная лента.

Форумная лента.

Файловая лента.  

Главная » Статьи » Программинг » Программирование [ Добавить статью ]

Знакомство с Android. Часть 2: Переходы между формами

Итак, продолжим. В этой части мы добавим в проект ещё одну форму и будем открывать её по нажатию кнопки Run. Также сделаем так, чтобы параметры, которые были введены в первой форме, передавались во вторую (они там ещё пригодятся). Однако, ничего страшного мы пока с ними делать не будем, а просто напишем "Введены такие-то числа".

Обработка нажатия кнопки

Напишем в StartScreen.java следующее (строки, которые мы добавляем, выделены другим цветом):

package demo.android.life;
 
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
 
public class StartActivity extends Activity implements OnClickListener
{
 Button mButton;
 /** Called when the activity is first created. */
 @Override
 public void onCreate(Bundle savedInstanceState)
 {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.main);
 mButton = (Button) findViewById(R.id.run);
 mButton.setOnClickListener(this);
 }
 public void onClick(View v)
 {
 Toast.makeText(this, "It works", Toast.LENGTH_SHORT).show();
 }
}
 


Здесь выделены добавленные строки. Итак, мы сделали форму слушателем события нажатия на кнопку (имплементировав OnClickListener), и подписались на это событие для кнопки mButton (с помощью setOnClickListener). Для того, чтобы проверить, что всё правильно, в методе, который обрабатывает событие, изменяем заголовок кнопки. Запускаем - работает.

Переход на другую форму

Итак, добавляем еще одну форму. Для этого надо создать два файла - разметки формы(run.xml) и класса формы (RunScreen.java).

Разметку сделаем простейшую:


<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">
<TextView
  android:id="@+id/Message"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
/>
</FrameLayout>


В классе добавим onCreate, в котором свяжем форму с этой разметкой:

<b>RunActivity.java</b>
 
package demo.android.life;
 
import android.app.Activity;
import android.os.Bundle;
 
public class RunActivity extends Activity
{
 @Override
 public void onCreate(Bundle savedInstanceState)
 {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.run);
 }
}
 

Кроме того, нужно упомянуть о новой форме в AndroidManifest.xml. Для этого в раздел application добавляем следующее:

<activity android:name="RunActivity"></activity>

Кстати, в новых версиях ADT можно добавлять активности не руками в XML, а с помощью какого-никакого графического интерфейса во вкладке Application —> Application Nodes.

Переход на другую активность

Нам хочется, чтобы это окно появлялось после нажатия кнопки "Run". Пишем в обработчике этой кнопки следующее:

public void onClick(View v)
{
 Intent intent = new Intent();
 intent.setClass(this, RunActivity.class);
 
 startActivity(intent);
 finish();
}
 

Запускаем - работает. Теперь объясним, что сделали.

Intent

Intent - это описание некоторого действия, которое должно совершить приложение. Этим действием может быть переход к другому окну, совершение исходящего вызова, открытие списка контактов и т.д.. У Intent-а есть два основных атрибута:

  • action - функция, которую надо выполнить. Задается в виде константы: ACTION_VIEW, ACTION_DIAL и т.д.
  • data - аргумент этой функции, записанный в виде URI

Например, сочетание VIEW_ACTION content://contacts/people/1 соответствует выводу информации о контакте с идентификатором 1, а ACTION_DIAL tel:123 - выводу окна вызова с набранными цифрами 123.

Однако, нам всего этого не нужно, а нужно, чтобы обработчиком Intent-а была сама форма RunScreen. Для этого мы используем функцию setClass (или есть ещё такая setClassName).

Вызов функции startActivity(intent) запускает операцию intent (т.е. открывает окно), finish() завершает текущую задачу (т.е. закрывает окно StartScreen).

Передача данных между окнами

Итак, окно RunScreen появляется, но на нем ничего нет. Рассмотрим, каким образом можно передать параметры, введенные в StartScreen, в окно RunScreen.

У класса Intent, помимо основных атрибутов, есть ещё и второстепенные. В частности, есть такой атрибут extras, где в виде хеша (Bundle) хранятся любые дополнительные параметры. Им-то мы и воспользуемся. Итак, добавим в класс RunScreen.java следующие константы (ключи хеша):

public static final String EXT_COLS = "cols";
public static final String EXT_ROWS = "rows";
public static final String EXT_CELLS = "cells";
 

Теперь модифицируем обработчик onClick в классе StartScreen.java, чтобы он выглядел так:

public void onClick(View v)
{
 EditText rowsEditor = (EditText)findViewById(R.id.rows_count);
 EditText colsEditor = (EditText)findViewById(R.id.columns_count);
 EditText cellsEditor = (EditText)findViewById(R.id.cells_count);
 
 int cols = Integer.parseInt(colsEditor.getText().toString());
 int rows = Integer.parseInt(rowsEditor.getText().toString());
 int cells = Integer.parseInt(cellsEditor.getText().toString());
 
 Intent intent = new Intent();
 intent.setClass(this, RunActivity.class);
 
 intent.putExtra(RunActivity.EXT_COLS, cols);
 intent.putExtra(RunActivity.EXT_ROWS, rows);
 intent.putExtra(RunActivity.EXT_CELLS, cells);
 
 startActivity(intent);
 finish();
}
 

Итак, мы передали в наш Intent дополнительные параметры. Теперь мы получим их в RunScreen в методе onCreate:

public void onCreate(Bundle savedInstanceState)
{
 super.onCreate(savedInstanceState);
 setContentView(R.layout.run);
 Bundle extras = getIntent().getExtras();
 int cols = extras.getInt(EXT_COLS);
 int rows = extras.getInt(EXT_ROWS);
 int cells = extras.getInt(EXT_CELLS);
 
 TextView message = (TextView)findViewById(R.id.message);
 message.setText("Rows: " + rows + "\nColumns: " + cols + "\nCells: " + cells);
}
 

Теперь, после нажатия на кнопку Run мы видим следующее: 

Заключение

Итак, мы добавили в наше приложение ещё одну форму, создали переход на неё и передали параметры из первой формы.


Взято с http://www.mobilab.ru

Категория: Программирование | Добавил: Virus (28.11.2012)

Похожие темы на пост "Знакомство с Android. Часть 2: Переходы между формами"

  
Просмотров: 1094 | Рейтинг: 0.0/0

Дорогие пользователи и гости сайта!!! Пожалуйста, если вам не сложно, оставте комментарий или ваше мнение о портале в Гостевой книге. Ваше мнение очень важно для нас и очень поможет в поиске дальнейшего пути развития сайта. С уважением, Администрация сайта AndroBum!



Так же рекомендуем:
Всего комментариев: 0
Информация:
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.

[ Регистрация | Вход ]
Поиск

Мини-чат

Block title
Virus
файлов: 69
Постов: 38
Комментов: 1005
Репутация: 0
Ранг:

droid
файлов: 3
Постов: 0
Комментов: 0
Репутация: 100
Ранг:

Serge
файлов: 1
Постов: 0
Комментов: 0
Репутация: 0
Ранг:

Sergey
файлов: 1
Постов: 0
Комментов: 0
Репутация: 0
Ранг:

Аватар не установлен! Blackfoxxx
файлов: 0
Постов: 0
Комментов: 0
Репутация: 0
Ранг:


Друзья сайта
  • Официальный блог
  • скрипты, шаблоны, html, css
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz

  • Статистика Сайта
    Статистика сайта как на сайте

    Пользователей всего: +0
    Материалов всего [?]: +
    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0
    Гости сайта Пользователи

    Яндекс.Метрика




    Пользователи онлайн:


    Flag Counter



    Все материалы размещенные на сайте принадлежат их владельцам.
    Copyright dodomo.do.am © 2010-2012