2013-01-02 43 views
1

我是一名新手Android開發人員,我試圖從使用GSON和AsynTask的RESTful Web服務中獲取數據。然而,當包含AsynTask類的活動就叫做,我在logcat中得到的唯一錯誤是:Android - 無法打開堆棧跟蹤文件

11月1日至2日:17:58.275:E/dalvikvm(807):無法打開堆棧跟蹤文件 「/data/anr/traces.txt」:是一個目錄

然後是doInBackground方法不能被調用,因此沒有響應從Web服務了。 我GOOGLE了這個問題,但大多數人都得到了permission denied什麼的,而不是is a directory在我的情況。所以,如果你有任何關於如何解決這個問題的建議,請幫助我!

如果任何人都可以要求包含AsynTask類的代碼,包括我在這裏:

public class PlaceListActivity extends Activity{ 

    private ListView m_vwPlaceLayout; 
    private ArrayList<Place> m_arrPlaceList; 
    private PlaceAdapter m_placeListAdapter; 

    @Override 
    public void onCreate(Bundle savedInstanceState){ 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.place_list); 
     m_vwPlaceLayout = (ListView) findViewById(R.id.spotListView); 
     m_arrPlaceList = new ArrayList<Place>(); 
     m_placeListAdapter = new PlaceAdapter(this, R.layout.place_view, m_arrPlaceList); 
     m_vwPlaceLayout.setAdapter(m_placeListAdapter); 
     populateList(); 
    } 

    public void populateList(){ 
     Intent intent = getIntent(); 
     String key = intent.getStringExtra("KEYWORD"); 
     new GetSpots().execute(key); 
    } 

    private class GetSpots extends AsyncTask<String, Integer, ArrayList<Place>>{ 

     protected ArrayList<Place> doInBackground(String... keys){ 
      ArrayList<Place> list = null; 
      String url = "http://10.0.2.2:81/HGourmet/getPlaces?key=" + keys[0].trim(); 
      try{ 
       RestClient client = new RestClient(url); 
       try{ 
        client.Execute(RequestMethod.GET); 
       }catch(Exception e){ 
        e.printStackTrace(); 
       } 

       String json = client.getResponse(); 
       Gson gson = new Gson(); 
       Type listType = new TypeToken<ArrayList<Place>>(){}.getType(); 
       list = gson.fromJson(json, listType); 
      }catch(Exception e){} 
      return list; 
     } 

     protected void onProgressUpdate(Integer... progress){ 

     } 

     protected void onPreExecute(){ 

     } 

     protected void onPostExecute(ArrayList<Place> placeList){ 
      if (placeList != null){ 
       for (Place place : placeList){ 
        m_arrPlaceList.add(place); 
       } 
       m_placeListAdapter.notifyDataSetChanged(); 
      } 
      else{ 
       Toast.makeText(PlaceListActivity.this, "No Results!", Toast.LENGTH_LONG).show(); 
      } 
     } 
    } 

} 
+0

你可以發佈你用來調用異步任務的代碼嗎 – almuneef

+0

嗨almuneef,我剛剛編輯過我的帖子,其中包含AsyncTask。這個類的重點是從Web服務獲取數據並將它們顯示爲列表。 –

回答

1

哦,原來堆棧跟蹤誤差問題無論何時顯示它。我注意到我在doInBackground方法中捕獲異常時忘記了打印錯誤,當我添加它時,我發現錯誤在於JSON請求的URL。好吧,這很難承認,但我仍然解決了它。

+0

是的,堆棧跟蹤權限問題是Android bug報告系統中的一個錯誤 - 所以您的解決方案是找到並修復導致崩潰的原始錯誤。 –