onCreate не викликається


77

У мене 2 дії: Перший користувач натискає кнопку, яка запускає 2-ю активність. Друга діяльність виконує всю роботу.

Я запускаю 2-у діяльність наступним чином, яка знаходиться всередині внутрішнього класу onClickListener, і я намагався явно викликати її за допомогою (FirstActivity.this, Simple.Class), але трапляється те саме.

    Intent test = new Intent(arg0.getContext(),Simple.class);
    startActivity(test);

На емуляторі я бачу, як екран переміщається, як його виклик 2-ї діяльності, але все, що я отримую, це чорний екран, але з мого макета нічого не завантажується. Я подивився logcat, і я бачу повідомлення про помилки ниток підшивки. Це функція onCreate з мого другого заходу, але я не отримую жодних результатів ні з екрану, ні з журналу, що показує мені, що були викликані функції журналу:

    public void onCreate(Bundle savedState)
    {
       Log.d("SimpleActivity","OnCreate Started");

       super.onCreate(savedState);
   setContentView(R.layout.simple);

       Log.d("SimpleActivity","OnCreate Ended");
    }

Примітка: Я закликав базовий конструктор у OnCreate () за допомогою super.onCreate (savedState) у своєму коді вище.


опублікуйте ще трохи коду, щоб ми могли побачити, що таке arg0. Ви, мабуть, не повинні використовувати все, що це є. Використовуйте YourActivity.this як контекст для переходу до нового наміру.
FoamyGuy

Ви вирішили це? Чи є у вас фрагмент усередині подання, який інстанціюється безпосередньо?
Адам Мендоса,

Відповіді:


282

Зі мною сталося те, що я перевизначив неправильний onCreateметод. Я перевизначав, public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState)коли мені справді потрібно було перевизначити protected void onCreate(@Nullable Bundle savedInstanceState). Можливо, це може комусь допомогти!


19
Дякую, це було насправді це!
mrpeardotnet

3
Ця безглузда помилка взяв мене принаймні один годину , щоб знайти ... Будь ти проклятий, public void onCreate!
Рафаель Ройє-Рівард

2
oncreate (& enter посадив мене тут, ха-ха .. автозаповнення повинно полегшити роботу, чи не так?
Vihaan Verma

4
дякує Google за те, що "void onCreate (Bundle savedInstanceState, PersistableBundle persistentState)" зробив метод за замовчуванням для завершення коду. Grrrrrrr
Карлос

2
Дякуємо Google, що дозволив нам зосередитись на розробці додатків: D
Андреа Чіоккареллі,

7

Можливо, що onCreate не викликається, якщо діяльність ніколи не була знищена, якщо з якихось причин дія зависає, наступного разу її створення не буде відтворено, а замість цього відновлено ...

Принаймні, це те, чим я займаюся прямо зараз у своєму коді ... Життєвий цикл діяльності здається хорошим логічним поясненням .. Однак 99% часу я покладаюсь на викликання, яке викликається при запуску Активності, і це мене не підводить ... .

Редагувати: І, звичайно, це тому, що я не називав END (), коли виходив з активності. Дох.


1
Ця відповідь дає мені підказку щодо вирішення моєї проблеми. У моєму випадку Activity завершується за умови прапора об'єкта, і це поміщається в запущений код обробника. Але цей об'єкт стає нульовим перед виконанням запуску. Дякую за це.
jrhamza

Ось що відбувається в моєму випадку, переходить прямо до onPause, onCreated не викликається.
live-love

2

Це не пов'язано з цією певною проблемою, але також це може трапитися, коли діяльність не оголошена у файлі маніфесту)




0

вам слід @Override onCreate і додати super.onCreate()до нього

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

   Log.d("SimpleActivity","OnCreate Started");
   setContentView(R.layout.simple);
   Log.d("SimpleActivity","OnCreate Ended");
}

0

Будьте обережні, якщо ваш метод належить AppCompatActivity або Activity .

Це залежить від того, що ви застосували до свого класу

Якщо ви хочете додати життєвий цикл або будь-які методи заміни, я рекомендую вам натиснути CTRL+Oабо зробити, Code > Override methodsі там ви зможете побачити, де належить метод

Знімок екрана для ілюстративних цілей - діалогове вікно "Методи заміщення" Android Studio

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.