Używam klasy, która extends Application klasa. Mam metodę w tej klasie. Muszę zadzwonić do tej metody za pomocą instancji. Ilekroć nazywam tę metodę za pomocą instancji rzuca NullPointerException, ponieważ instancja jest zawsze null. Używam wzoru Singleton, aby uzyskać instancję.

Aplikacja.java.

public class AppSetting extends Application {
    private static AppSetting instance;

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

        instance = new AppSetting();
        ....
    }

    public static synchronized AppSetting getInstance() {
        if (instance == null) {
            instance = new AppSetting();
            return instance;
        }
        return instance;
    }

    public somemethod() {
        return...
    }
}

Czynność

Używam tego kodu, aby zadzwonić do metody AppSetting.getInstance().somemethod()

Zawsze dostaję, że instancja jest null. Jak poprawnie uzyskać instancję? Czy robię coś złego w stworzeniu?

0
deluxan 20 styczeń 2020, 11:31

1 odpowiedź

Najlepsza odpowiedź

Zamiast new AppSetting() użyj this, aby utworzyć instancję AppSetting

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

    instance = this;
}

public static AppSetting getInstance() {
    return instance;
}

Nie zapomnij również dodać klasy AppSetting w AndroidManifest.xml 's application Tag jak poniżej:

<application
    android:name=".AppSetting"
    <!-- Others code -->
>
3
Md. Asaduzzaman 20 styczeń 2020, 08:43