подскажите с регистрацией Activity

Интерфейс, диалоги, темы, стили, меню
Ответить
LUN1
Сообщения: 15
Зарегистрирован: 12 июл 2014, 16:34

подскажите с регистрацией Activity

Сообщение LUN1 » 05 авг 2014, 15:11

В проекте реализован объект MyApplication (extends Application), который самостоятельно вызывает ListViewActivity через startActivity (хочу хранить в MyApplication общие данные).

При отладке выяснилось, что конструктор ListViewActivity не запускается. Подозреваю, что неправильно зарегистрирована Activity - не подскажите, что надо изменить в манифесте (предполагается ТОЛЬКО ручной запуск Activity) ?


Кусок Манифеста:

<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme"
android:name=".MyApplication">
<activity
android:name=".ListViewActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

Начало MyApplication

public class MyApplication extends Application {

// ------ ГЛОБАЛЬНЫЕ ДАННЫЕ ------
ArrayList<Web_site> sites;

@Override
public void onCreate () {
super.onCreate();

sites = new ArrayList<Web_site>();
Log.d("XXX", "sites created");
sites.add(new Web_site("site1", "text1"));
sites.add(new Web_site("site2", "text2"));
sites.add(new Web_site("site3", "text3"));
Log.d("XXX", "sites filled");

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

startActivity(intent);
}

Начало ListViewActivity

public class ListViewActivity extends Activity {

MyAdapter my_adapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

Log.d("XXX", "onCreate ListView started");

MyApplication app = (MyApplication) getApplication();

Log.d("XXX", "app.received");

my_adapter = new MyAdapter(this, app.sites);

Log.d("XXX", "adapter created");

setContentView(R.layout.activity_list_view);


}
}

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

Re: подскажите с регистрацией Activity

Сообщение klblk » 06 авг 2014, 06:57

1) Оформляйте код по-человечески (в редакторе есть спец теги);
2) Могу конечно чего-то не понимать, но стартовать Activity в классе Application не самая лучшая идея;
3) Приметы для запуска активити при старте приложения:
[syntax=xml]<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>[/syntax]

LUN1
Сообщения: 15
Зарегистрирован: 12 июл 2014, 16:34

Re: подскажите с регистрацией Activity

Сообщение LUN1 » 07 авг 2014, 20:52

klblk писал(а):1) Оформляйте код по-человечески (в редакторе есть спец теги);
2) Могу конечно чего-то не понимать, но стартовать Activity в классе Application не самая лучшая идея;
2 -- Почему ? А если я не знаю, какой Activity будет запущен... (зависит от внешних условий), мне казалось, что это самое то (если в этом кроются грабли - расскажите, pls).
klblk писал(а): 3) Приметы для запуска активити при старте приложения:
[syntax=xml]<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>[/syntax]
Приметы для запуска я представляю.
А вот каким образом сделать, что Activity сама не запускалась автоматом, но была доступна для запуска вручную - этого я пока не понял...

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: подскажите с регистрацией Activity

Сообщение Mikhail_dev » 07 авг 2014, 21:17

Запуск
[syntax=java5]
public class BootUpReceiver extends BroadcastReceiver{

public BootUpReceiver() {
Thread.setDefaultUncaughtExceptionHandler(new CustomExceptionHandler());
}

@Override
public void onReceive(Context context, Intent intent) {
//для Activity
Intent ativivtyIntent = new Intent(context, GPSSampleActivity.class);
ativivtyIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(ativivtyIntent);


//для Service
Intent serviceIntent = new Intent(context, GPSService.class);
context.startService(serviceIntent);
}

}
[/syntax]

[syntax=xml]
<receiver
android:name=".BootUpReceiver"
android:enabled="true"
android:permission="android.permission.RECEIVE_BOOT_COMPLETED" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.QUICKBOOT_POWERON" />

<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
[/syntax]

Мы так делаем будтзагрузку. При желании, можно ввести условие, какую активность запускать.

Viewer
Сообщения: 180
Зарегистрирован: 30 апр 2014, 11:42

Re: подскажите с регистрацией Activity

Сообщение Viewer » 08 авг 2014, 03:47

LUN1 писал(а): А вот каким образом сделать, что Activity сама не запускалась автоматом, но была доступна для запуска вручную - этого я пока не понял...
Какая-то надуманная проблема.
Ну и сделайте стартовую Activity и решайте в ней какую дальше Activity запускать, что вы их так боитесь :)

Ответить