1

私は初心者のAndroid開発者であり、GSONとAsynTaskを使用してRESTfulWebサービスからデータを取得しようとしています。ただし、AsynTaskクラスを含むアクティビティが呼び出された場合、LogCatで発生するエラーは次のとおりです。

01-02 11:17:58.275:E / dalvikvm(807):スタックトレースファイルを開くことができません'/data/anr/traces.txt':ディレクトリです

そして、doInBackgroundメソッドを呼び出すことができないため、Webサービスから応答が得られません。私はこの問題をグーグルで検索しましたが、私の場合とは異なり、ほとんどの人が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();
            }
        }
    }

}
4

1 に答える 1

1

ああ、スタックトレースエラーはいつ表示されても問題ではないことがわかりました。メソッドで例外をキャッチしたときにエラーを出力するのを忘れていたのに気づき、それdoInBackgroundを追加したときに、エラーがJSONリクエストのURLにあることがわかりました。まあ、これは認めるのが恥ずかしいことですが、とにかく解決しました。

于 2013-01-02T12:05:50.117 に答える