Для прикладу створимо просту програму, яка буде відправляти текстове повідомлення з однієї сторінки на іншу. Для цього відкрийте файл activity_main.xml (що в директорії res/layout/) в текстовому вигляді та зітріть тег <TextView>, а також перейменуйте тег <RelativeLayout> на <LinearLayout>.
P.S. Програма Eclipse має зручну властивість, щоб не набирати команди і параметри повністю - досить набрати перші символи та натиснути комбінацію клавіш Ctrl+Пробіл, та в випадаючому списку обрати потрібну вам команду.Також потрібно додати параметр орієнтації внутрішніх об’єктів android:orientation="horizontal". Повинно вийти наступне:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
tools:context=".MainActivity" >
</LinearLayout>Далі додамо всередині контейнера текстове поле <EditText>.
<EditText android:id="@+id/edit_message"Тег текстового поля має параметри:
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:hint="@string/edit_message" />
- android:id - цей параметр аналогічний параметру id в HTML він ідентифікує об’єкт, щоб потім до нього можна було звертатися. В значенні параметру спочатку пишеться тим значення, в даному випадку це id, це нестандартний тип тому його потрібно створити, із-за цього перед указанням типу значення ставиться знак +. Створений об’єкт від тепер буде ідентифікуватися як edit_message.
- android:layout_weight - цей параметр означає значущість цього об’єта, перед сусідніми. Чим більше значення тим більше місця займає об’єкт. За умовчуванням цей параметр дорівнює 0.
- android:layout_width та android:layout_height - так само як і в контейнері визначає довжину і ширину об’єкта, в даному випадку висота відносно вмісту, а ширина - 0.
- android:hint - цей параметр означає, яким буде першочерговий надпис, спонукаючий до введення значення в поле.
<ButtonВ даного тегу повторюються параметри, окрім android:text - це надпис на кнопці.
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button_send" />
Тепер загальний текст файлу має такий вигляд:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"Після цього потрібно призначити значення строковим змінним. Для цього потрібно відкрити файл res/values/strings.xml в текстовому вигляді, та змінити текст файлу на наступний:
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
tools:context=".MainActivity" >
<EditText android:id="@+id/edit_message"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:hint="@string/edit_message" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button_send" />
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">My First App</string>
<string name="edit_message">Enter a message</string>
<string name="button_send">Send</string>
<string name="menu_settings">Settings</string>
<string name="title_activity_main">MainActivity</string>
</resources>
Якщо хочете, можете змінити значення змінних за вашим бажанням.
Після цих змін можна запустити нашу програму на виконання, і подивитися що у нас вийшло.
Тепер додамо дії до нашої програми. Для цього потрібно відкрити файл activity_main.xml і до тегу <Button> додати параметр android:onClick="sendMessage". Цей параметр означає, що при натисненні на цей об’єкт виконається метод sendMessage.
Метод, що буде виконуватись, прописується в класі, файл якого знаходиться в директорії src/.
До класу потрібно додати наступний метод:
public void sendMessage(View view) {Перша строчка методу, створює об’єкт, якому присвоюється новий фрейм на основі DisplayMessageActivity.class (ми його потім створимо). Далі створюється об’єкт типу текстове поле, якому присвоюється нами створений об’єкт edit_message, потім строковій змінній message присвоюється значення введеного в поле тексту. Нарешті значення строкової змінної message присвоюється глобальній змінній EXTRA_MESSAGE і запускається новий фрейм.
Intent intent = new Intent(this, DisplayMessageActivity.class);
EditText editText = (EditText) findViewById(R.id.edit_message);
String message = editText.getText().toString();
intent.putExtra(EXTRA_MESSAGE, message);
startActivity(intent);
}
Також потрібно на початку класу визначити глобальну змінну EXTRA_MESSAGE.
public class MainActivity extends Activity {Значення змінної "com.max.post.MESSAGE" повинно називатися за ім’ям вашого пакету. Створений клас потребує імпортування додаткових бібліотек, для того щоб Eclipse вписав імпортування автоматично - потрібно натиснути комбінацію клавіш Ctrl+Shift+O, при цьому повинні дописатися імпортування потрібних бібліотек.
public final static String EXTRA_MESSAGE = "com.max.post.MESSAGE";
...
}
import android.app.Activity;Далі створимо новий фрейм DisplayMessageActivity, в якому буде показуватися відправлене нами повідомлення. Для цього потрібно вибрати в головному меню File->New->Other...->Android->Android Activity. Обрати пустий фрейм. Далі заповнити поля: назву вашого проекту, назва фрейма буде DisplayMessageActivity, назву шаблону (layout) залишаєте як є, та назву заголовку можете написати довільну. Після цього натискаємо Finish.
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;
Відкриваємо файл /src/DisplayMessageActivity.java та переписуємо його на:
public class DisplayMessageActivity extends Activity {Натискаємо комбінацію клавіш Ctrl+Shift+O, щоб додати імпортовані бібліотеки. В класі твориться наступне - в методі onCreate створюється новий об’єкт intent, з нього в строкову змінну message витягується значення глобальної змінної з головного фрейму. Далі створюється новий об’єкт тексту TextView, тексту задається розмір textView.setTextSize(30), та задається значення тексту змінною message. Після цього створений об’єкт тексту виводиться на екран.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = getIntent();
String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
TextView textView = new TextView(this);
textView.setTextSize(30);
textView.setText(message);
setContentView(textView);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
NavUtils.navigateUpFromSameTask(this);
return true;
}
return super.onOptionsItemSelected(item);
}
}
Запускаємо програму і дивимося на результат.