Урок 115. Одно приложение на разных экранах

Обсуждение уроков
usb_developer
Сообщения: 1
Зарегистрирован: 27 фев 2014, 15:37

Re: Урок 115. Одно приложение на разных экранах

Сообщение usb_developer » 27 фев 2014, 16:10

После прочтения данного урока у меня возникли небольшие трудности с пониманием работы фрагментов в плане вызова системных методов.
Итак архитектура моего приложения приблизительно следующая:
Если класс PropertiesActivity (аналогия с примером ru.startandroid.develop.p1151multiplescreen MainActivity)

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

public class PropertiesActivity extends FragmentActivity {

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_properties);

		... 

		if (withDetails) {
			DetailsFragment details = (DetailsFragment) getSupportFragmentManager()
					.findFragmentById(R.id.cont);
			if (details == null || details.getPosition() != possition) {
				details = DetailsFragment.newInstance(possition);
				getSupportFragmentManager().beginTransaction()
						.replace(R.id.cont, details).commit();
			}
		} else {
			Intent newintent = new Intent(this, DetailsActivity.class);
			newintent.putExtra("possition", possition);
			startActivity(newintent);
		}
	}
}
тут все понятно, когда приложение начинает работать в land ориентации вопросов нет.
Но когда я поворачиваю планшт, я вижу следующие логи:

- запускаю активность PropertiesActivity

02-27 13:48:16.021: V/com.my.app.PropertiesActivity(18446): onCreate() com.my.app.PropertiesActivity@41905b98
02-27 13:48:16.041: V/com.my.app.PropertiesActivity(18446): new DetailsFragment()
02-27 13:48:16.041: V/com.my.app.PropertiesActivity(18446): onStart() com.my.app.PropertiesActivity@41905b98

02-27 13:48:31.591: V/com.my.app.DetailsFragment(18446): onCreate() DetailsFragment{41916738 #1 id=0x7f09001a}
02-27 13:48:31.591: V/com.my.app.DetailsFragment(18446): onCreateView() DetailsFragment{41916738 #1 id=0x7f09001a}
02-27 13:48:36.531: V/com.my.app.DetailsFragment(18446): onStart() DetailsFragment{41916738 #1 id=0x7f09001a}
02-27 13:48:36.531: V/com.my.app.PropertiesActivity(18446): onResume() com.my.app.PropertiesActivity@41905b98
02-27 13:48:36.531: V/com.my.app.DetailsFragment(18446): onResume() DetailsFragment{41916738 #1 id=0x7f09001a}

---> вот тут перевотор из land в port

02-27 13:49:06.121: V/com.my.app.PropertiesActivity(18446): onPause() com.my.app.PropertiesActivity@41905b98
02-27 13:49:06.121: V/com.my.app.DetailsFragment(18446): onPause() DetailsFragment{41916738 #1 id=0x7f09001a}
02-27 13:49:06.131: V/com.my.app.PropertiesActivity(18446): onStop() com.my.app.PropertiesActivity@41905b98
02-27 13:49:06.131: V/com.my.app.DetailsFragment(18446): onStop() DetailsFragment{41916738 #1 id=0x7f09001a}
02-27 13:49:06.141: V/com.my.app.PropertiesActivity(18446): onDestroy() com.my.app.PropertiesActivity@41905b98
02-27 13:49:24.741: V/com.my.app.DetailsFragment(18446): onDestroy() DetailsFragment{41916738 #1 id=0x7f09001a}

- выше равершение PropertiesActivity в land конфигурации, ниже перезапуск в port конфигурации

02-27 13:49:24.771: V/com.my.app.DetailsFragment(18446): onCreate() DetailsFragment{419324b0 #1 id=0x7f09001a}
02-27 13:49:24.881: V/com.my.app.PropertiesActivity(18446): onCreate() com.my.app.PropertiesActivity@41931410
02-27 13:49:24.881: V/com.my.app.PropertiesActivity(18446): onStart() com.my.app.PropertiesActivity@41931410
02-27 13:49:26.381: V/com.my.app.DetailsFragment(18446): onCreateView() DetailsFragment{419324b0 #1 id=0x7f09001a}
02-27 13:49:27.611: V/com.my.app.DetailsFragment(18446): onStart() DetailsFragment{419324b0 #1 id=0x7f09001a}
02-27 13:49:27.621: V/com.my.app.PropertiesActivity(18446): onResume() com.my.app.PropertiesActivity@41931410
02-27 13:49:27.621: V/com.my.app.DetailsFragment(18446): onResume() DetailsFragment{419324b0 #1 id=0x7f09001a}

Вопрос почему запускается инициализация фрагмента DetailsFragment:onCreateView() для фрагмента id=0x7f09001a ведь он в данный момент
на экране не отображается потому как для port конфигурации в xml файле указан только TitlesFragment фрагмент,
DetailsFragment вроде как не должен прорисовыватся?

дальше еще интересней, выбираю категорию из списка TitlesFragment:

02-27 13:56:53.521: V/com.my.app.PropertiesActivity(18446): new DetailsActivity()

Создается новая активность

02-27 13:56:53.581: V/com.my.app.PropertiesActivity(18446): onPause() com.my.app.PropertiesActivity@41931410
02-27 13:56:53.591: V/com.my.app.DetailsFragment(18446): onPause() DetailsFragment{419324b0 #1 id=0x7f09001a}
02-27 13:56:53.621: V/com.my.app.DetailsActivity(18446): onCreate()
02-27 13:56:53.631: V/com.my.app.DetailsActivity(18446): new DetailsFragment()

02-27 13:56:53.641: V/com.my.app.DetailsFragment(18446): onCreate DetailsFragment{418848e0 #0 id=0x1020002}
02-27 13:56:53.711: V/com.my.app.DetailsFragment(18446): onCreateView() DetailsFragment{418848e0 #0 id=0x1020002}

И вот тут создается новый фрагмент DetailsFragment{id=0x1020002} который уже нормально отображется на экране
А старый который не отображался DetailsFragment{id=0x7f09001a} завершается.

02-27 13:56:57.991: V/com.my.app.DetailsFragment(18446): onStart() DetailsFragment{418848e0 #0 id=0x1020002}
02-27 13:56:57.991: V/com.my.app.DetailsFragment(18446): onResume() DetailsFragment{418848e0 #0 id=0x1020002}
02-27 13:56:58.581: V/com.my.app.PropertiesActivity(18446): onStop() com.my.app.PropertiesActivity@41931410
02-27 13:56:58.581: V/com.my.app.DetailsFragment(18446): onStop() DetailsFragment{419324b0 #1 id=0x7f09001a}

Вопрос почему присходит создание невидимого фрагмента DetailsFragment{id=0x7f09001a} при изменение из land в port?
Если запускать или только в land или только в port - то "ненужных" фрагментов не содается

unleashed
Сообщения: 1
Зарегистрирован: 21 мар 2014, 13:11

Re: Урок 115. Одно приложение на разных экранах

Сообщение unleashed » 21 мар 2014, 13:17

Выскакивает всплывающее окно с ошибкой при запуске данного урока.
The application Имя_проекта (process имя_процесса) has stopped unexpectedly. Please try again.
:? В чем может быть загвоздка?

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

Re: Урок 115. Одно приложение на разных экранах

Сообщение rezak90 » 21 мар 2014, 13:22

Do you have a crash log?
R.id.team
Политика на форуме запрещена

AlexVinn
Сообщения: 81
Зарегистрирован: 04 апр 2014, 04:56

Re: Урок 115. Одно приложение на разных экранах

Сообщение AlexVinn » 04 май 2014, 21:00

[FIX] Cделал всё как в уроке до первого запуска. Апп слетает при запуске. Помогите разобраться.

LogCat
[syntax=xml]05-04 17:50:13.856: E/AndroidRuntime(581): FATAL EXCEPTION: main
05-04 17:50:13.856: E/AndroidRuntime(581): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.p1151_multiplescreen/com.example.p1151_multiplescreen.MainActivity}: android.view.InflateException: Binary XML file line #9: Error inflating class fragment
05-04 17:50:13.856: E/AndroidRuntime(581): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)[/syntax]

MainActivity.java
[syntax=java5]package com.example.p1151_multiplescreen;

import com.example.p1151_multiplescreen.TitlesFragment.onItemClickListener;

import android.os.Bundle;
import android.support.v4.app.FragmentActivity;

public class MainActivity extends FragmentActivity implements
onItemClickListener {

int position = 0;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstanceState != null)
position = savedInstanceState.getInt("position");
showDetails(position);
}

void showDetails(int pos) {
DetailsFragment details = (DetailsFragment) getSupportFragmentManager()
.findFragmentById(R.id.cont);
if (details == null || details.getPosition() != pos) {
details = DetailsFragment.newInstance(pos);
getSupportFragmentManager().beginTransaction()
.replace(R.id.cont, details).commit();
}
}

@Override
public void itemClick(int position) {
this.position = position;
showDetails(position);
}

@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("position", position);
}
}
[/syntax]

TitlesFragment.java
[syntax=java5]package com.example.p1151_multiplescreen;

import android.app.Activity;
import android.os.Bundle;
import android.support.v4.app.ListFragment;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class TitlesFragment extends ListFragment {

public interface onItemClickListener {
public void itemClick(int position);
}

onItemClickListener listener;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(),
android.R.layout.simple_list_item_1, getResources()
.getStringArray(R.array.headers));
setListAdapter(adapter);
}

@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
listener = (onItemClickListener) activity;
}

@Override
public void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
listener.itemClick(position);
}
}[/syntax]

DetailsFragment.java
[syntax=java5]package com.example.p1151_multiplescreen;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

public class DetailsFragment extends Fragment {

public static DetailsFragment newInstance(int pos) {
DetailsFragment details = new DetailsFragment();
Bundle args = new Bundle();
args.putInt("position", pos);
details.setArguments(args);
return details;
}

int getPosition() {
return getArguments().getInt("position", 0);
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.details, container, false);
TextView tv = (TextView) v.findViewById(R.id.tvText);
tv.setText(getResources().getStringArray(R.array.content)[getPosition()]);
return v;
}
}
[/syntax]

activity_main.xml
[syntax=xml]<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >

<fragment
android:id="@+id/titles"
android:name="com.example.develop.p1151_multiplescreen.TitlesFragment"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1" >
</fragment>

<FrameLayout
android:id="@+id/cont"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1" >
</FrameLayout>

</LinearLayout>[/syntax]

details.xml
[syntax=xml]<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#cccccc" >

<TextView
android:id="@+id/tvText"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
</TextView>

</FrameLayout>[/syntax]
Последний раз редактировалось AlexVinn 05 май 2014, 10:34, всего редактировалось 1 раз.
Тут должна быть подпись.

Аватара пользователя
klblk
Сообщения: 1097
Зарегистрирован: 18 окт 2012, 11:17
Откуда: г. Красноярск

Re: Урок 115. Одно приложение на разных экранах

Сообщение klblk » 05 май 2014, 08:25

ну все же написано, нет у вас в пакете com.example.develop.p1151_multiplescreen класса TitlesFragment. Но зато он есть в пакете com.example.p1151_multiplescreen.

Vic
Сообщения: 6
Зарегистрирован: 14 ноя 2012, 08:39

Re: Урок 115. Одно приложение на разных экранах

Сообщение Vic » 19 май 2014, 20:01

usb_developer писал(а):После прочтения данного урока у меня возникли небольшие трудности с пониманием работы фрагментов в плане вызова системных методов.

...

Вопрос почему запускается инициализация фрагмента DetailsFragment:onCreateView() для фрагмента id=0x7f09001a ведь он в данный момент
на экране не отображается потому как для port конфигурации в xml файле указан только TitlesFragment фрагмент,
DetailsFragment вроде как не должен прорисовыватся?

Вопрос почему присходит создание невидимого фрагмента DetailsFragment{id=0x7f09001a} при изменение из land в port?
Если запускать или только в land или только в port - то "ненужных" фрагментов не содается
Аналогичный вопрос

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

вот тут окончание разрушения при повороте из широкого в портретный режим:
05-19 16:01:49.307: I/WorkActivity(5085): ---------- WorkActivity::onPause()
05-19 16:01:49.317: I/WorkActivity(5085): ---------- WorkActivity::onStop()
05-19 16:01:49.327: I/DetailsFragment(5085): ---------- DetailsFragment::onDestroy()
05-19 16:01:49.327: I/WorkActivity(5085): ---------- WorkActivity::onDestroy()

а тут все начинает создаваться по новой (хотя позднее проверка в WorkActivity говорит, что в ее лейауте нет DetailsFragment)

05-19 16:01:49.367: I/DetailsFragment(5085): ---------- DetailsFragment::onAttach(WorkActivity)
05-19 16:01:49.367: I/DetailsFragment(5085): ---------- DetailsFragment::onCreate(DetailsFragment)

05-19 16:01:49.367: I/WorkActivity(5085): ---------- WorkActivity::onCreate(savedInstance)
05-19 16:01:49.417: I/WorkActivity(5085): ---------- withDetails = false

05-19 16:01:49.417: I/DetailsFragment(5085): ---------- DetailsFragment::onCreateView(savedInstanceState)
05-19 16:01:49.417: D/DetailsFragment(5085): ---------- DetailsFragment::printOrientation() Портретная ориентация

Почему при смене ориентации этот фрагмент создается и опять прилепляется к активити, хотя в ее лейауте его не существует?

Можно ли как-то его убить еще при создании (например, проверив, что он прилепляется к конкретной активити при портретном режиме)?

Попытка убить его таким способом:

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

DetailsFragment details = (DetailsFragment) getSupportFragmentManager().findFragmentById(R.id.contentregion);
if( details != null ) {
	Log.i(TAG, "before delete details");
	FragmentTransaction fTrans = getSupportFragmentManager().beginTransaction();
	fTrans.remove(details);
	fTrans.commit();
	Log.i(TAG, "after delete details");
}
не удалась - он по прежнему продолжает свой цикл, хотя код отрабатывает без ошибок :(

Vic
Сообщения: 6
Зарегистрирован: 14 ноя 2012, 08:39

Re: Урок 115. Одно приложение на разных экранах

Сообщение Vic » 20 май 2014, 18:02

Мне этот фантомный фрагмент не нужен, потому что он начинает обрабатывать данные, которых нет, поэтому поставил такой костыль , чтобы он не ходил дальше:

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


public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

viewBase = inflater.inflate(R.layout.details, container, false);

if(getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
	if( this.getActivity().getLocalClassName().compareToIgnoreCase("WorkActivity") == 0 ) {
		return viewBase;
	}
}
 ....
}
После выхода он удаляется вышеприведенным кусочком с getSupportFragmentManager.
Вот такой костыль
Если Вы знаете правильный способ избежать создания этого фрагмента - напишите.

Аватара пользователя
doter.ua
Сообщения: 1106
Зарегистрирован: 23 ноя 2013, 16:08
Откуда: Ukraine

Re: Урок 115. Одно приложение на разных экранах

Сообщение doter.ua » 09 окт 2014, 18:02

Зачем производится побитовая операция??
К примеру:
SCREENLAYOUT_SIZE_MASK равен Constant Value: 15 (0x0000000f)
SCREENLAYOUT_SIZE_LARGE равен Constant Value: 3 (0x00000003)
Сравниваются числа: 0x0000000f "битовое_И" 0x******** >= 3 . То есть Маска оставляет последний квартет (4 бита если в двоичном) а все остальные обращает в 0.
Если посмотреть Константы, то последний бит отвечает за размеры экранов. Я так понимаю в числе getResources().getConfiguration().screenLayout хранится 8 параметров экрана: каждый из которых может принимать значения от 0 до f. За что отвечают остальные биты? На странице http://developer.android.com/reference/ ... ation.html константы используют только первые 2 бита, а нафига нужны остальные или где их описание?
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.

Аватара пользователя
klblk
Сообщения: 1097
Зарегистрирован: 18 окт 2012, 11:17
Откуда: г. Красноярск

Re: Урок 115. Одно приложение на разных экранах

Сообщение klblk » 10 окт 2014, 05:15

потому что размер у типа int равен 32 битам, не больше и не меньше. Если перевести в 16-ричную систему: 2^32=16^8, т.е 8 hex цифр. Их просто не может ни быть.

Razor
Сообщения: 10
Зарегистрирован: 13 окт 2014, 13:58

Re: Урок 115. Одно приложение на разных экранах

Сообщение Razor » 20 ноя 2014, 05:35

Делал всё по уроку, при запуске получал ошибку "unable to instantiate application".
Часа два плясал с бубном, пока не нашёл решение: в манифесте в теге application добавить атрибут android:name="android.app.Application"

nikomp
Сообщения: 68
Зарегистрирован: 08 дек 2014, 17:03

Re: Урок 115. Одно приложение на разных экранах

Сообщение nikomp » 27 апр 2015, 14:39

пытаюсь повторить урок.
при запуске на эмуляторе получаю ошибку:

04-27 11:33:40.920: E/Trace(619): error opening trace file: No such file or directory (2)
04-27 11:33:41.230: W/dalvikvm(619): Unable to resolve superclass of Lcom/example/p1151_multiplescreen/MainActivity; (7)
04-27 11:33:41.230: W/dalvikvm(619): Link of class 'Lcom/example/p1151_multiplescreen/MainActivity;' failed
04-27 11:33:41.230: D/AndroidRuntime(619): Shutting down VM
04-27 11:33:41.230: W/dalvikvm(619): threadid=1: thread exiting with uncaught exception (group=0x40a13300)
04-27 11:33:41.250: E/AndroidRuntime(619): FATAL EXCEPTION: main
04-27 11:33:41.250: E/AndroidRuntime(619): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.p1151_multiplescreen/com.example.p1151_multiplescreen.MainActivity}: java.lang.ClassNotFoundException: com.example.p1151_multiplescreen.MainActivity
04-27 11:33:41.250: E/AndroidRuntime(619): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1983)
04-27 11:33:41.250: E/AndroidRuntime(619): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
04-27 11:33:41.250: E/AndroidRuntime(619): at android.app.ActivityThread.access$600(ActivityThread.java:130)
04-27 11:33:41.250: E/AndroidRuntime(619): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
04-27 11:33:41.250: E/AndroidRuntime(619): at android.os.Handler.dispatchMessage(Handler.java:99)
04-27 11:33:41.250: E/AndroidRuntime(619): at android.os.Looper.loop(Looper.java:137)
04-27 11:33:41.250: E/AndroidRuntime(619): at android.app.ActivityThread.main(ActivityThread.java:4745)
04-27 11:33:41.250: E/AndroidRuntime(619): at java.lang.reflect.Method.invokeNative(Native Method)
04-27 11:33:41.250: E/AndroidRuntime(619): at java.lang.reflect.Method.invoke(Method.java:511)
04-27 11:33:41.250: E/AndroidRuntime(619): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
04-27 11:33:41.250: E/AndroidRuntime(619): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
04-27 11:33:41.250: E/AndroidRuntime(619): at dalvik.system.NativeStart.main(Native Method)
04-27 11:33:41.250: E/AndroidRuntime(619): Caused by: java.lang.ClassNotFoundException: com.example.p1151_multiplescreen.MainActivity
04-27 11:33:41.250: E/AndroidRuntime(619): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
04-27 11:33:41.250: E/AndroidRuntime(619): at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
04-27 11:33:41.250: E/AndroidRuntime(619): at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
04-27 11:33:41.250: E/AndroidRuntime(619): at android.app.Instrumentation.newActivity(Instrumentation.java:1053)
04-27 11:33:41.250: E/AndroidRuntime(619): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1974)
04-27 11:33:41.250: E/AndroidRuntime(619): ... 11 more

подскажите в чем может быть ошибка, вроде уж и руками пересоздавал layout'ы, видимо что-то забываю сделать.

nikomp
Сообщения: 68
Зарегистрирован: 08 дек 2014, 17:03

Re: Урок 115. Одно приложение на разных экранах

Сообщение nikomp » 28 апр 2015, 08:51

Лююди, ну подскажите плииз, в чем ошибка?

Аватара пользователя
doter.ua
Сообщения: 1106
Зарегистрирован: 23 ноя 2013, 16:08
Откуда: Ukraine

Re: Урок 115. Одно приложение на разных экранах

Сообщение doter.ua » 28 апр 2015, 09:43

ClassNotFoundException: com.example.p1151_multiplescreen.MainActivity класс не найден.
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.

nikomp
Сообщения: 68
Зарегистрирован: 08 дек 2014, 17:03

Re: Урок 115. Одно приложение на разных экранах

Сообщение nikomp » 28 апр 2015, 11:00

doter.ua писал(а):ClassNotFoundException: com.example.p1151_multiplescreen.MainActivity класс не найден.
Спасибо, я тоже смог перевести, сообщение. Дело в том, что этот класс есть. Побаловался с Target, если не откатываться до предыдущих версий (т.е. при создании проекта оставить все как есть) приложение нормально отрабатывает. Может это какой-то глюк Eclipse?

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 115. Одно приложение на разных экранах

Сообщение Foenix » 28 апр 2015, 11:29

Может это какой-то глюк Eclipse?
нет.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
doter.ua
Сообщения: 1106
Зарегистрирован: 23 ноя 2013, 16:08
Откуда: Ukraine

Re: Урок 115. Одно приложение на разных экранах

Сообщение doter.ua » 28 апр 2015, 11:33

nikomp писал(а):
doter.ua писал(а):ClassNotFoundException: com.example.p1151_multiplescreen.MainActivity класс не найден.
Спасибо, я тоже смог перевести, сообщение. Дело в том, что этот класс есть. Побаловался с Target, если не откатываться до предыдущих версий (т.е. при создании проекта оставить все как есть) приложение нормально отрабатывает. Может это какой-то глюк Eclipse?
от чего экстендится этот класс? ЭкшенБарАктивити? В лоу ТаргетАПИ его нету.
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.

Аватара пользователя
klblk
Сообщения: 1097
Зарегистрирован: 18 окт 2012, 11:17
Откуда: г. Красноярск

Re: Урок 115. Одно приложение на разных экранах

Сообщение klblk » 28 апр 2015, 13:36

В манифесте Activity либо не прописана либо прописана криво.

Аватара пользователя
doter.ua
Сообщения: 1106
Зарегистрирован: 23 ноя 2013, 16:08
Откуда: Ukraine

Re: Урок 115. Одно приложение на разных экранах

Сообщение doter.ua » 28 апр 2015, 13:39

klblk писал(а):В манифесте Activity либо не прописана либо прописана криво.
Unable to resolve superclass of Lcom/example/p1151_multiplescreen/MainActivity + ошибка после изменения таргет АПИ. Все ясно - как день.
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.

K_Vladimir
Сообщения: 36
Зарегистрирован: 28 июн 2015, 03:13

Re: Урок 115. Одно приложение на разных экранах

Сообщение K_Vladimir » 23 сен 2015, 20:39

Большое спасибо авторам за урок! Весьма доходчиво изложена сложная тема.

Однако, может это и глупость, но на горизонте всё время маячит мысль:
Не приводит ли использование фрагментов, в данном случае, к огромным и совершенно ненужным затратам на ресурсы.
Всё равно почти под каждый из них нужно создавать Активити.
Особенно проблем много с PrefereveActivity.
Не проще ли обновлять содержимое вьюшек внутри одной активити?

Аватара пользователя
doter.ua
Сообщения: 1106
Зарегистрирован: 23 ноя 2013, 16:08
Откуда: Ukraine

Re: Урок 115. Одно приложение на разных экранах

Сообщение doter.ua » 23 сен 2015, 22:49

K_Vladimir писал(а):Большое спасибо авторам за урок! Весьма доходчиво изложена сложная тема.

Однако, может это и глупость, но на горизонте всё время маячит мысль:
Не приводит ли использование фрагментов, в данном случае, к огромным и совершенно ненужным затратам на ресурсы.
Всё равно почти под каждый из них нужно создавать Активити.
Особенно проблем много с PrefereveActivity.
Не проще ли обновлять содержимое вьюшек внутри одной активити?
Фрагменты можно менять внутри активити. В принципе можно создавать только 1 активити а все остальное - на фрагментах.
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.

Ответить