2011-06-07 155 views
3

我想解析一個片段內的線程中的XML文件。獲取資產範圍內

我的代碼部分片段是:

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); 
          } 
         } 
} 
} 

注意這整個類擴展列表片段。

正在訪問片段中正確的資產嗎?

原因我無法讀取文件。

有沒有例外,所以我無法弄清楚確切的錯誤。

但最後在使用一個生成器解析後,我得到0個項目。

有什麼建議嗎?

回答

14

正在訪問片段中正確的資產嗎?

使用ActivitygetActivity()),而不是ApplicationgetApplicationContext()),看看有沒有什麼幫助。除非你知道他們在說什麼,否則不要在你的應用中使用getApplicationContext()

+0

它幫助我找到問題的根源。謝謝 – 2011-06-08 04:08:43

+0

它不適合我,但爲什麼不使用'getApplicationContext()'? – Si8 2013-12-03 16:49:04

+0

@ SiKni8:見http://www.doubleencore.com/2013/06/context/ – CommonsWare 2013-12-03 17:11:48