Страница 1 из 14

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

Добавлено: 03 окт 2011, 03:00
damager82
В этом уроке мы:
- создадим и вызовем второе Activity в приложении


Click here to read this article!

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

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

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

Добавлено: 22 апр 2012, 22:07
KamiSempai
Возможно Вы забыли прописать активити в файле манифеста.

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

Добавлено: 24 апр 2012, 18:16
Владислав
При создании Intent я неверно указал имя класса.

Спасибо!

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

Добавлено: 24 апр 2012, 22:26
KamiSempai
Советую по чаще использовать комбонацию Ctrl + Пробел.
Это должно избавить Вас от подобных ошибок в будующем.

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

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

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

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

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

Добавлено: 10 июл 2012, 23:03
top
Создал в отдельном файле класс 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

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

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

Добавлено: 11 июл 2012, 06:10
top
нашел ошибку

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

Добавлено: 06 сен 2012, 00:16
ZipovUA
почему-то при вызове нового окна, оно отображается пустым.

Тоесть: есть главный активити. Из него вызывается второй активити. К второму активити привязан 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

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

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

Добавлено: 06 сен 2012, 00:29
ZipovUA
комент: бросил логи в каждый из новосозданых activity.

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

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

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

Добавлено: 07 сен 2012, 00:05
ZipovUA
спасибо за моральную поддержку :)

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

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

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

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

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

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

Добавлено: 07 сен 2012, 09:21
AndreyI
Я вообще вручную методы не переопределяю.
Юзаю Source -> Override/Implement Methods

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

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

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

Добавлено: 10 сен 2012, 12:57
dil_android
Здравствуйте,

Я новичок.
Начал читать и очень понравилась подача материала. Спасибо большое автору.
Всегда хочется применить, то, что узнал, сразу на практике, но не всегда получается.
Надеюсь на помощь мэтров сейчас и в дальнейшем. Когда-нибудь смогу помогать сам.
Суть вопросов (вынужден выложить коды, так как, еще не совсем владею лингвистикой 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>

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

Добавлено: 10 сен 2012, 13:25
AndreyI
В вызываемой активити в методе onCreate сначала нужно вызвать
setContentView(R.layout.secondactivity);

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

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

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

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

Добавлено: 10 сен 2012, 13:46
rezak90
dil_android и как приятно работать с андроидом из NetBeans'a? Потому что я раз видел и по моему это изврат :?

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

Добавлено: 10 сен 2012, 15:27
dil_android
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 с чем либо другим не могу. Пока, это единственная возможность и для нас, людей старой закалки, может и плюс, что больше приходится работать ручками. Помогает лучше изучить предмет.

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

Добавлено: 10 сен 2012, 15:39
rezak90
Eclipse конечно далеко не лучная IDE но всё таки для андроида это лучший вариант. И если планируете зарабатывать программированием на Андроиде в частной компании то одним из условий является знание IDE Eclipse.