Application中声明的方法无法访问

时间:2017-09-14 12:01:11

标签: java android

的Manifest.xml:

 Var.Watch UINT32_MAX
 Var.PRINT UINT32_MAX
 PRINT %Decimal Var.VALUE(UINT32_MAX)

我的App.java:

<application
        android:name="com.google.firebase.quickstart.database.App"
        android:label="@string/app_name"
        android:supportsRtl="true">
</application>

我的Activity.java:

public class App extends Application {
    protected List<Contact> main_contacts = null;
    public void setMainContacts(List<Contact> contacts) {
        main_contacts = contacts;
    }
    public List<Contact> getMainContacts() {
        return main_contacts ;
    }
}

Android Studio甚至无法识别public class MainActivity{ @Override public void onContactsFetched(List<Contact> contacts) { getApplication().setMainContacts(contacts);//<= Not recognised } } 中声明的方法 enter image description here

光盘:为简洁起见,省略了上述其他方法

3 个答案:

答案 0 :(得分:0)

public class App extends Application {
    protected List<Contact> main_contacts = null;
    public void setMainContacts(List<Contact> contacts) {
        main_contacts = contacts;
    }

@Override
public void onCreate() {
    super.onCreate();
    mInstance = this;
}

public List<Contact> getMainContacts() {
     return main_contacts ;
 }

 public static synchronized App getContext() {
    return mInstance;
 }
}

您可以像

一样访问它
App.getContext().yourMethod

答案 1 :(得分:0)

您必须转发到自己的App类,因为Android SDK方法getApplication()不知道您已将其子类化。

public class MainActivity {
    @Override
    public void onContactsFetched(List<Contact> contacts) {
        // Cast to your App
        ((App)getApplication()).setMainContacts(contacts);
    }
}

答案 2 :(得分:0)

您应该在Activity中创建应用程序对象。之后,您可以访问Application类方法。

@Override
    public void onContactsFetched(List<Contact> contacts) {
        // Cast to your App
        MyAppication myAppication=(MyAppication) getApplication();
        myAppication.setMainContacts(contacts);
    }