Урок 21. Создание и вызов Activity
Урок 21. Создание и вызов Activity
В этом уроке мы:
- создадим и вызовем второе Activity в приложении
Click here to read this article!
- создадим и вызовем второе Activity в приложении
Click here to read this article!
Последний раз редактировалось damager82 12 июн 2017, 13:05, всего редактировалось 6 раз.
Re: Урок 21. Создание и вызов Activity
Здравствуйте! При запуске программы после нажатия на кнопку у меня вылетает программа.
По логам определил, что это происходит в тот момент, когда должен появиться второй Activity (startActivity(intent);)
А вот, что еще выдалось в логах.
По логам определил, что это происходит в тот момент, когда должен появиться второй Activity (startActivity(intent);)
А вот, что еще выдалось в логах.
- KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Re: Урок 21. Создание и вызов Activity
Возможно Вы забыли прописать активити в файле манифеста.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
Хватит таскать макулатуру на тренировку! Используй T Note.
Re: Урок 21. Создание и вызов Activity
При создании Intent я неверно указал имя класса.
Спасибо!
Спасибо!
- KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Re: Урок 21. Создание и вызов Activity
Советую по чаще использовать комбонацию Ctrl + Пробел.
Это должно избавить Вас от подобных ошибок в будующем.
Это должно избавить Вас от подобных ошибок в будующем.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
Хватит таскать макулатуру на тренировку! Используй T Note.
Re: Урок 21. Создание и вызов Activity
Вопрос может нубский,но ответа я на него так и не нашёл: как закрыть активность,которую я открыл способом выше? =)
Re: Урок 21. Создание и вызов Activity
Метод finish()romanzi писал(а):Вопрос может нубский,но ответа я на него так и не нашёл: как закрыть активность,которую я открыл способом выше? =)
Re: Урок 21. Создание и вызов Activity
Создал в отдельном файле класс 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
Как исправить данную ситуацию?
там прописал всякие методы типа 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
нашел ошибку
Re: Урок 21. Создание и вызов Activity
почему-то при вызове нового окна, оно отображается пустым.
Тоесть: есть главный активити. Из него вызывается второй активити. К второму активити привязан 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
прошу помощи в решении данной ситуации.
Тоесть: есть главный активити. Из него вызывается второй активити. К второму активити привязан 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
комент: бросил логи в каждый из новосозданых activity.
сообщения в логи, при нажатии кнопки по вызову activity, не отобразились. Из чего можна судить, что вызов Activity на самом деле не был произведён. Хотя в case мы попадаем...
также никаких сообщений про ошибку на екране и в логах не отображается
сообщения в логи, при нажатии кнопки по вызову activity, не отобразились. Из чего можна судить, что вызов Activity на самом деле не был произведён. Хотя в case мы попадаем...
также никаких сообщений про ошибку на екране и в логах не отображается
Re: Урок 21. Создание и вызов Activity
спасибо за моральную поддержку
Проблема решена.
название метода было не правильным (OnCreate, а не onCreate) поэтому код активити и не отображался.
Проблему закрываю
Проблема решена.
название метода было не правильным (OnCreate, а не onCreate) поэтому код активити и не отображался.
Проблему закрываю
Re: Урок 21. Создание и вызов Activity
Обрати внимание: если имя метода набрано правильно, слева от него появится треугольник (закрашенный, если в базовом классе есть его реализация, не закрашенный - если он абстрактный или принадлежит интерфейсу).
Перед объявлением метода добавляется @Override - знак того, что это не новый, а переопределяемый метод.
Если имя метода или типы параметров набраны неправильно, компилятор выдаст ошибку.
Перед объявлением метода добавляется @Override - знак того, что это не новый, а переопределяемый метод.
Если имя метода или типы параметров набраны неправильно, компилятор выдаст ошибку.
Re: Урок 21. Создание и вызов Activity
Я вообще вручную методы не переопределяю.
Юзаю Source -> Override/Implement Methods
Юзаю Source -> Override/Implement Methods
Re: Урок 21. Создание и вызов Activity
собстсвенно то, что Eclipse указывал на @override как на ошибку, и показало причину: в родительском класе нет метода с таким именем, что абсурдно. Значить имя метода указано неправильно
-
- Сообщения: 103
- Зарегистрирован: 10 сен 2012, 11:58
Re: Урок 21. Создание и вызов Activity
Здравствуйте,
Я новичок.
Начал читать и очень понравилась подача материала. Спасибо большое автору.
Всегда хочется применить, то, что узнал, сразу на практике, но не всегда получается.
Надеюсь на помощь мэтров сейчас и в дальнейшем. Когда-нибудь смогу помогать сам.
Суть вопросов (вынужден выложить коды, так как, еще не совсем владею лингвистикой 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>
Я новичок.
Начал читать и очень понравилась подача материала. Спасибо большое автору.
Всегда хочется применить, то, что узнал, сразу на практике, но не всегда получается.
Надеюсь на помощь мэтров сейчас и в дальнейшем. Когда-нибудь смогу помогать сам.
Суть вопросов (вынужден выложить коды, так как, еще не совсем владею лингвистикой 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
В вызываемой активити в методе onCreate сначала нужно вызвать
setContentView(R.layout.secondactivity);
А уже потом найти (а не создавать новый) в нем TextView и добавить к нему текст из интента.
setContentView(R.layout.secondactivity);
А уже потом найти (а не создавать новый) в нем TextView и добавить к нему текст из интента.
Код: Выделить всё
textView=(TextView) findViewById(R.id.textView);
textView.setTextSize(40);
textView.setText(arrivedMessage);
Re: Урок 21. Создание и вызов Activity
dil_android и как приятно работать с андроидом из NetBeans'a? Потому что я раз видел и по моему это изврат
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
-
- Сообщения: 103
- Зарегистрирован: 10 сен 2012, 11:58
Re: Урок 21. Создание и вызов Activity
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 с чем либо другим не могу. Пока, это единственная возможность и для нас, людей старой закалки, может и плюс, что больше приходится работать ручками. Помогает лучше изучить предмет.
Попробовал
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
Eclipse конечно далеко не лучная IDE но всё таки для андроида это лучший вариант. И если планируете зарабатывать программированием на Андроиде в частной компании то одним из условий является знание IDE Eclipse.
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена