2011-06-07 4 views
3

J'essaie d'analyser un fichier XML dans un thread dans un fragment.Obtention d'actifs dans des fragments

extrait partiel de mon code est:

public void onCreate(Bundle savedInstanceState) 
    { 
    mAdapter = new ListItemNearbyStoresAdapter(getActivity().getApplicationContext(), mStoresByKey); 

     setListAdapter(mAdapter); 

     // Load the list of stores from hard coded xml 
     loadStoresByThread(getActivity().getApplicationContext()); 

    } 

    private void loadStoresByThread(final Context ctx) 
     { 
      Thread t = new Thread() 
      { 

       public void run() 
       { 

        try 
        { 


         Log.d(TAG, "In the thread"); 
         String[] files = ctx.getResources().getStringArray(R.array.storefiles); 
         // String[] files={"s1.xml"}; 



         for (int i = 0; i < files.length; i++) 
         { 

          try 
          { 
           InputStream stream = getActivity().getAssets().open(files[i]); 

           NearbyItemDomFeedParser parser = new NearbyItemDomFeedParser(stream); 
           ArrayList<Store> stores = parser.parse(); 
           Log.e("no of fioles read","asd :"+stores.size()); 
           mStores.addAll(stores); 
           cache.setItems(mStores); 
          } 
          catch (Exception e) 
          { 
           Log.d(TAG, "Exception caught" + e); 
          } 
         } 
} 
} 

Notez cette classe entière étend un fragment de liste.

L'accès aux actifs est-il correct dans un fragment?

Cause Je n'arrive pas à lire le fichier.

Aucune exception n'a été déclenchée, donc je ne parviens pas à déterminer l'erreur exacte.

Mais finalement, après l'analyse à l'aide d'un constructeur, je reçois 0 articles.

Des suggestions?

Répondre

14

L'accès aux actifs est-il correct dans un fragment?

Utilisez le Activity (getActivity()), pas le Application (getApplicationContext()) et voir si cela aide. Sauf si vous avez des instructions très spécifiques de quelqu'un qui sait de quoi ils parlent, n'utilisez jamais getApplicationContext() dans votre application.

+0

il m'a aidé à obtenir le à la racine du problème .. Merci –

+0

Cela n'a pas fonctionné pour moi mais pourquoi ne jamais utiliser 'getApplicationContext()'? – Si8

+0

@ SiKni8: voir http://www.doubleencore.com/2013/06/context/ – CommonsWare