2017-09-14 41 views
-1

的Manifest.xml:方法不能訪問

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

我App.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 ; 
    } 
} 

我Activity.java:

public class MainActivity{ 
    @Override 
    public void onContactsFetched(List<Contact> contacts) { 
     getApplication().setMainContacts(contacts);//<= Not recognised 
    } 
} 

Android的工作室甚至不承認在App enter image description here

012中聲明的方法

盤:省略了其它方法上面簡潔

+2

敢肯定你應該投getApplication的)返回的對象(到App – StarterPack

+0

註冊在Android.manifest文件的應用程序並嘗試讓你的方法是靜態的。 – Ankita

+0

@StarterPack讓它起作用 – ishandutta2007

回答

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 
0

你要投給你自己的App類訪問它,因爲Android SDK的方法getApplication()不知道你把它分類了。

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

您應該在Activity中創建應用程序對象。之後,您可以訪問Application類方法。

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