Урок 21. Создание и вызов Activity

Обсуждение уроков
Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

Урок 21. Создание и вызов Activity

Сообщение damager82 » 03 окт 2011, 03:00

В этом уроке мы:
- создадим и вызовем второе Activity в приложении


Click here to read this article!
Последний раз редактировалось damager82 12 июн 2017, 13:05, всего редактировалось 6 раз.
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

Владислав
Сообщения: 2
Зарегистрирован: 22 апр 2012, 18:56

Re: Урок 21. Создание и вызов Activity

Сообщение Владислав » 22 апр 2012, 19:24

Здравствуйте! При запуске программы после нажатия на кнопку у меня вылетает программа.
По логам определил, что это происходит в тот момент, когда должен появиться второй Activity (startActivity(intent);)
А вот, что еще выдалось в логах.
Изображение

Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

Re: Урок 21. Создание и вызов Activity

Сообщение KamiSempai » 22 апр 2012, 22:07

Возможно Вы забыли прописать активити в файле манифеста.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

Владислав
Сообщения: 2
Зарегистрирован: 22 апр 2012, 18:56

Re: Урок 21. Создание и вызов Activity

Сообщение Владислав » 24 апр 2012, 18:16

При создании Intent я неверно указал имя класса.

Спасибо!

Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

Re: Урок 21. Создание и вызов Activity

Сообщение KamiSempai » 24 апр 2012, 22:26

Советую по чаще использовать комбонацию Ctrl + Пробел.
Это должно избавить Вас от подобных ошибок в будующем.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

romanzi
Сообщения: 8
Зарегистрирован: 31 май 2012, 21:55

Re: Урок 21. Создание и вызов Activity

Сообщение romanzi » 02 июн 2012, 10:38

Вопрос может нубский,но ответа я на него так и не нашёл: как закрыть активность,которую я открыл способом выше? =)

Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

Re: Урок 21. Создание и вызов Activity

Сообщение damager82 » 04 июн 2012, 10:40

romanzi писал(а):Вопрос может нубский,но ответа я на него так и не нашёл: как закрыть активность,которую я открыл способом выше? =)
Метод finish()
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

top
Сообщения: 14
Зарегистрирован: 22 июн 2012, 06:09

Re: Урок 21. Создание и вызов Activity

Сообщение top » 10 июл 2012, 23:03

Создал в отдельном файле класс create_db
там прописал всякие методы типа update, insert с различными переменными.
Затем в MainActivity прописываю

Прописываю Вpublic void onCreate(Bundle savedInstanceState)
mdb= new create_db(this);
db = mdb.getWritableDatabase();

далее для вызова функций прописываю mdb.update(....);
так же для вызова функций при нажатии кнопки в AlertDialog тоже пишу mdb.update(...) и т.д.
public void onClick(DialogInterface dialog, int which)
{
...
mdb.update_add(_id,add_l,db);
...}
Затем Создал второе Activity Activity_two

там в OnCreate тоже прописал
mdb= new create_db(this);
db = mdb.getWritableDatabase();

также в OnCreate прописываю mdb.update(...)
Все работает,

Но после OnCreate сделал вызов AlertDialog и для обработки нажатия
прописываю так же
protected Dialog onCreateDialog(int id) {
Dialog dialog = null;
switch (id) {
....

public void onClick(DialogInterface dialog, int which) {
mdb.update(...)
...}
...}

и здесь уже пишет ошибку

mdb cannot be resolved

Как исправить данную ситуацию?

top
Сообщения: 14
Зарегистрирован: 22 июн 2012, 06:09

Re: Урок 21. Создание и вызов Activity

Сообщение top » 11 июл 2012, 06:10

нашел ошибку

ZipovUA
Сообщения: 15
Зарегистрирован: 07 май 2012, 11:17

Re: Урок 21. Создание и вызов Activity

Сообщение ZipovUA » 06 сен 2012, 00:16

почему-то при вызове нового окна, оно отображается пустым.

Тоесть: есть главный активити. Из него вызывается второй активити. К второму активити привязан layout.
Все связи в манифесте присутствуют, но при работе приложения на мобильном телефоне, 2ая форма (layout) отображается пустой

1) как видим, вызов интента присутствует и кроме того, как видно с логов, кнопка #2 нажимается успешно и мы попадаем в нужный case
http://cs317817.userapi.com/v317817849/ ... qYXm9s.jpg

2) есть необходимые классы и layout'ы
http://cs317817.userapi.com/v317817849/ ... vEB194.jpg

3) В activity2 и activity3 стоит вызов layout'а, который соотвествует названию класа
http://cs317817.userapi.com/v317817849/ ... w1fi2o.jpg

4)как видим, layout для activity2 не пустой
http://cs317817.userapi.com/v317817849/ ... 77x_jE.jpg

5) да и layout для activity3 не пустой
http://cs317817.userapi.com/v317817849/ ... fQFPYc.jpg

6)в manifest описание класов как активити присутствует
http://cs317817.userapi.com/v317817849/ ... 9xElZ8.jpg

Вроде бы всё есть... но когда запускаю приложение на смартфоне, то при нажатии button1 или button2 которые должны вызывать activity1 или activity2 ни один графический элемент не отображается

имеем белый квадрат Малевича
http://cs317817.userapi.com/v317817849/ ... jTW2QE.jpg

прошу помощи в решении данной ситуации.

ZipovUA
Сообщения: 15
Зарегистрирован: 07 май 2012, 11:17

Re: Урок 21. Создание и вызов Activity

Сообщение ZipovUA » 06 сен 2012, 00:29

комент: бросил логи в каждый из новосозданых activity.

сообщения в логи, при нажатии кнопки по вызову activity, не отобразились. Из чего можна судить, что вызов Activity на самом деле не был произведён. Хотя в case мы попадаем...

также никаких сообщений про ошибку на екране и в логах не отображается

ZipovUA
Сообщения: 15
Зарегистрирован: 07 май 2012, 11:17

Re: Урок 21. Создание и вызов Activity

Сообщение ZipovUA » 07 сен 2012, 00:05

спасибо за моральную поддержку :)

Проблема решена.

название метода было не правильным (OnCreate, а не onCreate) поэтому код активити и не отображался.

Проблему закрываю

math64
Сообщения: 235
Зарегистрирован: 16 июл 2012, 07:47

Re: Урок 21. Создание и вызов Activity

Сообщение math64 » 07 сен 2012, 08:42

Обрати внимание: если имя метода набрано правильно, слева от него появится треугольник (закрашенный, если в базовом классе есть его реализация, не закрашенный - если он абстрактный или принадлежит интерфейсу).
Перед объявлением метода добавляется @Override - знак того, что это не новый, а переопределяемый метод.
Если имя метода или типы параметров набраны неправильно, компилятор выдаст ошибку.

AndreyI
Сообщения: 372
Зарегистрирован: 14 май 2012, 16:18

Re: Урок 21. Создание и вызов Activity

Сообщение AndreyI » 07 сен 2012, 09:21

Я вообще вручную методы не переопределяю.
Юзаю Source -> Override/Implement Methods

ZipovUA
Сообщения: 15
Зарегистрирован: 07 май 2012, 11:17

Re: Урок 21. Создание и вызов Activity

Сообщение ZipovUA » 09 сен 2012, 20:52

собстсвенно то, что Eclipse указывал на @override как на ошибку, и показало причину: в родительском класе нет метода с таким именем, что абсурдно. Значить имя метода указано неправильно

dil_android
Сообщения: 103
Зарегистрирован: 10 сен 2012, 11:58

Re: Урок 21. Создание и вызов Activity

Сообщение dil_android » 10 сен 2012, 12:57

Здравствуйте,

Я новичок.
Начал читать и очень понравилась подача материала. Спасибо большое автору.
Всегда хочется применить, то, что узнал, сразу на практике, но не всегда получается.
Надеюсь на помощь мэтров сейчас и в дальнейшем. Когда-нибудь смогу помогать сам.
Суть вопросов (вынужден выложить коды, так как, еще не совсем владею лингвистикой Android):

1. Создал новую Activity посредством Intent, но в полученной Activity не отображаются элементы, указанные в secondactivity.xml, за исключением <TextView>. Подозреваю, что неправильно прописал manifest. К сожалению, в NetBeans нет возможности автоматически настраивать manifest, поэтому пришлось искать информацию и писать manifest для новой Activity самому.

2. Intent передал объект String и под него создана переменная textView. Возможно ли включить переменную textView как параметр в secondactivity.xml с тем, чтобы при вызове setContentView(R.layout.secondactivity) отображался полученный объект и все указанные в secondactivity.xml элементы (в данном случае Button).

Получается, что когда пишу setContentView(R.layout.secondactivity) показывает текст из android:text="@string/results" без кнопки Button, а тем более переданного текста (что и понятно, так как при setContentView(textView) показывает текст, полученный из первой Activity).

Буду признателен за ответ, очень поможет в дальнейшем понимании материала.

Здесь исходники:

MainActivity.java

public class MainActivity extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
setContentView(R.layout.main);

editText=(EditText) findViewById(R.id.edit_message);
}

public void sendMessage(View view) {

Intent intent = new Intent(this, DisplayMessageActivity.class);

String message = editText.getText().toString();
intent.putExtra("mymessage", message);
startActivity (intent);
}
}


public class DisplayMessageActivity extends Activity {

TextView textView;

@Override
public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
String arrivedMessage = getIntent().getStringExtra("mymessage");

// Create the text view
textView = new TextView (this);
textView.setTextSize(40);
textView.setText(arrivedMessage);

setContentView(R.layout.secondactivity);
}
}

secondactivity.xml

<?xml version="1.0" encoding="UTF-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/results"
android:textColor="@color/comments_color">
</TextView>

<Button
android:id="@+id/ok"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textView"
android:text="OK">
</Button>

</RelativeLayout>

Manifest

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="example.AndroidApplication1"
android:versionCode="1"
android:versionName="1.0">

<application android:label="@string/app_name" android:icon="@drawable/ic_launcher">

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

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

</activity>

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

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

</activity>
</application>
</manifest>

AndreyI
Сообщения: 372
Зарегистрирован: 14 май 2012, 16:18

Re: Урок 21. Создание и вызов Activity

Сообщение AndreyI » 10 сен 2012, 13:25

В вызываемой активити в методе onCreate сначала нужно вызвать
setContentView(R.layout.secondactivity);

А уже потом найти (а не создавать новый) в нем TextView и добавить к нему текст из интента.

Код: Выделить всё

textView=(TextView) findViewById(R.id.textView);
textView.setTextSize(40); 
 textView.setText(arrivedMessage);

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Урок 21. Создание и вызов Activity

Сообщение rezak90 » 10 сен 2012, 13:46

dil_android и как приятно работать с андроидом из NetBeans'a? Потому что я раз видел и по моему это изврат :?
R.id.team
Политика на форуме запрещена

dil_android
Сообщения: 103
Зарегистрирован: 10 сен 2012, 11:58

Re: Урок 21. Создание и вызов Activity

Сообщение dil_android » 10 сен 2012, 15:27

to AndreyI

Попробовал

setContentView(R.layout.secondactivity);

String arrivedMessage = getIntent().getStringExtra("mymessage");

// Create the text view

textView=(TextView) findViewById(R.id.textView);
textView.setTextSize(40);
textView.setText(arrivedMessage);

понял, что textView сохраняется в классе R, и поэтому может быть вызван.

запустил, тот же результат: отображает textView, но не демонстрирует содержание secondactivity

В этой связи остается актуальным вопрос " Возможно ли включить переменную textView как параметр в secondactivity.xml с тем, чтобы при вызове setContentView(R.layout.secondactivity) отображался полученный объект и все указанные в secondactivity.xml элементы (в данном случае Button)."

to rezak90

Изврат, не изврат, но желание работать с Android есть, а это главное.
Так как я новичок, то сравнивать NetBeans с чем либо другим не могу. Пока, это единственная возможность и для нас, людей старой закалки, может и плюс, что больше приходится работать ручками. Помогает лучше изучить предмет.

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Урок 21. Создание и вызов Activity

Сообщение rezak90 » 10 сен 2012, 15:39

Eclipse конечно далеко не лучная IDE но всё таки для андроида это лучший вариант. И если планируете зарабатывать программированием на Андроиде в частной компании то одним из условий является знание IDE Eclipse.
R.id.team
Политика на форуме запрещена

Ответить