2015-06-03 14 views
22

Ten błąd wystąpił podczas próby wygenerowania podpisanego pliku APK. Rzecz w tym, że moja aplikacja może normalnie uruchamiać i debugować na moim urządzeniu. Nie wiem, dlaczego podczas próby wygenerowania pliku APK wystąpił ten błąd. Jak zignorować ten błąd i wygenerować podpisany plik APK? Korzystam z Androida Studio 1.2.1.1 na Maca.Jak zignorować błąd "unikaj domyślnych konstruktorów w fragmentach"?

+0

jaki błąd, czy możesz opublikować błąd? – 3xplore

+0

Powinieneś zawsze zostawić puste fragmenty counstruktorów, wszystkie prace inicjalizacyjne powinny być wykonywane w onCreate(). – pawelo

+0

Cóż, bardziej interesuje mnie ignorowanie błędu. Dlaczego moja aplikacja może działać normalnie bez błędów podczas debugowania, podczas generowania pliku APK pojawia się tylko ten komunikat o błędzie? – user2872856

Odpowiedz

77

Znaleziono rozwiązanie. Łatwiej sposobem jest dodanie ich do Gradle:

android { 
      lintOptions { 
       checkReleaseBuilds false 
      } 
     } 

albo innym sposobem jest dodanie @SuppressLint("ValidFragment")

+3

Nie powinieneś mieć konstruktora innego niż domyślny we fragmencie. Możesz dodać metodę statyczną, taką jak getInstance (twoje argumenty ...) i stwórz z niej nowy fragment i ustaw te argumenty na swoim fragmencie. – Heisenberg

+0

Zobacz ten przykład: http://www.androiddesignpatterns.com/2012/05/using- newinstance-to-instantiate.html – Heisenberg

+0

Praca Dziękuję :) – InsaneCat

9

To jest w umowie Fragmentu: "Każdy fragment musi mieć pusty konstruktor, więc można go utworzyć podczas przywracania jego stanu aktywności. Zaleca się, aby podklasy nie miały innych konstruktorów z parametrami, ponieważ konstruktory te będą nie jest wywoływane, gdy fragment jest ponownie tworzony, zamiast tego argumenty mogą być dostarczane przez wywołującego za pomocą zestawu setArguments (Bundle), a następnie pobierane przez Fragment za pomocą funkcji getArguments(). "

16

wyłączenie lint zupełnie nie jest przyzwoity rozwiązanie, jeśli nadal chcą korzystać z zalet tego. Jeśli ktoś napotka to uważam, wyłączając tylko bardziej eleganckie rozwiązanie konkretnego błędu:

android { 
    lintOptions { 
     disable 'ValidFragment' 
    } 
} 
4

Dla mnie tylko pracował kombinację dwóch poprzednich odpowiedzi:

android { 
    lintOptions { 
     disable 'ValidFragment' 
     checkReleaseBuilds false 
    } 
} 

jednak pamiętać, że te A Zła łatka, aby uniknąć ostrzeżeń/błędów lint, rozwiązaniem jest dostosowanie konstruktora Fragment do publicznego statycznego konstruktora Fragment newInstance (params) Fragment.

Powiązane problemy