В проекте реализован объект 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);
}
}
подскажите с регистрацией Activity
Re: подскажите с регистрацией Activity
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]
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]
Re: подскажите с регистрацией Activity
2 -- Почему ? А если я не знаю, какой Activity будет запущен... (зависит от внешних условий), мне казалось, что это самое то (если в этом кроются грабли - расскажите, pls).klblk писал(а):1) Оформляйте код по-человечески (в редакторе есть спец теги);
2) Могу конечно чего-то не понимать, но стартовать Activity в классе Application не самая лучшая идея;
Приметы для запуска я представляю.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
Запуск
[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]
Мы так делаем будтзагрузку. При желании, можно ввести условие, какую активность запускать.
[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]
Мы так делаем будтзагрузку. При желании, можно ввести условие, какую активность запускать.
Re: подскажите с регистрацией Activity
Какая-то надуманная проблема.LUN1 писал(а): А вот каким образом сделать, что Activity сама не запускалась автоматом, но была доступна для запуска вручную - этого я пока не понял...
Ну и сделайте стартовую Activity и решайте в ней какую дальше Activity запускать, что вы их так боитесь