2013-08-03 2 views
0

웹 서비스에서 JSON 데이터를 구문 분석하는 응용 프로그램을 만들고 있습니다. 이 데이터는 목록보기에 저장되며 응용 프로그램에서 목록 내의 항목을 클릭 할 수 있도록 설정하려고합니다. 차례로 항목을 클릭하여 목록보기에서 웹보기로 활동을 전환하려고합니다. 그러나 목록의 항목을 클릭하면 예외가 발생했다는 메시지가 표시되고 "불행히도 [Application Name]이 (가) 중지되었습니다."라는 메시지가 표시되고 응용 프로그램이 종료됩니다.안드로이드 ListView setOnItemClickListener 예외

이 애플리케이션 외의 다른 문제는 없습니다. 그러므로 누군가이 문제를 해결하도록 도와 주시면 감사하겠습니다. 나는 주요 활동에서 코드의 전신을 공급하고 문제가에서 onCreate의 내부의 시도 캐치 내에서 발생하는, 당신은 또한 여기에서 응용 프로그램을 다운로드 할 수 있습니다 http://bit.ly/17rePw0

public class MainActivity extends ListActivity 
{ 
    GPSManager gpsManager; 

    ConnectionManager connectManager; 

    LocationManager locationManager = null; 
    LocationListener locationListener = null; 

    AlertDialogManager alertManager = new AlertDialogManager(); 

    private ProgressDialog progDialog; 

    JSONParser parser = new JSONParser(); 

    ArrayList<HashMap<String, String>> articleList; 

    private String URL_ARTICLES = "http://api.wikilocation.org/articles?lat=56.4607208&lng=-2.9680668&format=json&radius=100"; 
    private static final String TAG_ARTICLES = "articles"; 
    private static final String TAG_ID = "id"; 
    private static final String TAG_LAT = "lat"; 
    private static final String TAG_LNG = "lng"; 
    private static final String TAG_NAME = "title"; 
    private static final String TAG_URL = "url"; 
    private static final String TAG_DISTANCE = "distance"; 

    private static final int ARTICLE_LIMIT = 20; 
    private static int ARTICLE_RADIUS = 100; 

    JSONArray articles = null; 

    double lat, lng; 
    String latitude, longitude; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     articleList = new ArrayList<HashMap<String, String>>(); 

     connectManager = new ConnectionManager(getApplicationContext()); 
     gpsManager = new GPSManager(this); 

     if(gpsManager.RetrieveLocation) 
     { 
      lat = gpsManager.RetrieveLatitude(); 
      lng = gpsManager.RetrieveLongitude(); 

      latitude = String.valueOf(lat); 
      longitude = String.valueOf(lng); 

      //URL_ARTICLES = "http://api.wikilocation.org/articles?lat=" + latitude + "&lng=" + longitude + "&format=json&radius=100"; 
     } 
     else 
     { 
      gpsManager.showSettingsAlert(); 
     } 

     new LoadArticles().execute(); 

     ListView listView = getListView(); 

     try 
     { 
      listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

       @Override 
       public void onItemClick(AdapterView<?> adapt, View view, int position, long id) { 
        Intent intent = new Intent(MainActivity.this, WebActivity.class); 
        startActivity(intent); 
       }  
      }); 
     } 
     catch(Exception e) 
     { 
      e.printStackTrace(); 
     } 
    } 

    class LoadArticles extends AsyncTask<String, String, String> 
    { 
     protected void onPreExecute() 
     { 
      super.onPreExecute(); 

      progDialog = new ProgressDialog(MainActivity.this); 
      progDialog.setMessage("Loading Articles"); 
      progDialog.setIndeterminate(false); 
      progDialog.setCancelable(false); 
      progDialog.show(); 
     } 

     protected String doInBackground(String... args) 
     { 
      List<NameValuePair>params = new ArrayList<NameValuePair>(); 

      String json = parser.makeHttpRequest(URL_ARTICLES, "GET", params); 

      Log.d("Articles JSON: ", "> " + json); 

      try 
      { 
       JSONObject jObj = new JSONObject(json); 

       if(jObj != null) 
       { 
        articles = jObj.getJSONArray(TAG_ARTICLES); 

        for(int i = 0; i < articles.length(); i++) 
        { 
         JSONObject obj = articles.getJSONObject(i); 

         String id = obj.getString(TAG_ID); 
         String lat = obj.getString(TAG_LAT); 
         String lng = obj.getString(TAG_LNG); 
         String name = obj.getString(TAG_NAME); 
         String address = obj.getString(TAG_URL); 
         String distance = obj.getString(TAG_DISTANCE); 

         HashMap<String, String>map = new HashMap<String, String>(); 

         map.put(TAG_ID, id); 
         map.put(TAG_LAT, lat); 
         map.put(TAG_LNG, lng); 
         map.put(TAG_NAME, name); 
         map.put(TAG_URL, address); 
         map.put(TAG_DISTANCE, distance); 

         articleList.add(map); 
        } 
       } 
      } 
      catch(JSONException e) 
      { 
       e.printStackTrace(); 
      } 

      return null; 
     } 

     protected void onPostExecute(String file_url) 
     { 
      progDialog.dismiss(); 

      runOnUiThread(new Runnable(){ 

       public void run() 
       { 
        ListAdapter adapter = new SimpleAdapter(MainActivity.this, articleList, 
          R.layout.list_item_articles, new String[] 
        { 
         TAG_ID, TAG_NAME, TAG_DISTANCE }, new int[]{ R.id.artcile_id, R.id.article_name, R.id.article_distance 
        }); 

        setListAdapter(adapter); 
       } 
      }); 
     } 
    } 
} 

편집 : 추가 로그 캣 스택 추적을.

08-03 23:44:02.407: W/dalvikvm(875): threadid=1: thread exiting with uncaught exception (group=0x40a71930) 
08-03 23:44:02.457: E/AndroidRuntime(875): FATAL EXCEPTION: main 
08-03 23:44:02.457: E/AndroidRuntime(875): android.content.ActivityNotFoundException: Unable to find explicit activity class {com.android.muc2013/com.android.muc2013.WebActivity}; have you declared this activity in your AndroidManifest.xml? 
08-03 23:44:02.457: E/AndroidRuntime(875): at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1618) 
08-03 23:44:02.457: E/AndroidRuntime(875): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1417) 
08-03 23:44:02.457: E/AndroidRuntime(875): at android.app.Activity.startActivityForResult(Activity.java:3370) 
08-03 23:44:02.457: E/AndroidRuntime(875): at android.app.Activity.startActivityForResult(Activity.java:3331) 
08-03 23:44:02.457: E/AndroidRuntime(875): at android.app.Activity.startActivity(Activity.java:3566) 
08-03 23:44:02.457: E/AndroidRuntime(875): at android.app.Activity.startActivity(Activity.java:3534) 
08-03 23:44:02.457: E/AndroidRuntime(875): at com.android.muc2013.MainActivity$1.onItemClick(MainActivity.java:99) 
08-03 23:44:02.457: E/AndroidRuntime(875): at android.widget.AdapterView.performItemClick(AdapterView.java:298) 
08-03 23:44:02.457: E/AndroidRuntime(875): at android.widget.AbsListView.performItemClick(AbsListView.java:1100) 
08-03 23:44:02.457: E/AndroidRuntime(875): at android.widget.AbsListView$PerformClick.run(AbsListView.java:2749) 
08-03 23:44:02.457: E/AndroidRuntime(875): at android.widget.AbsListView$1.run(AbsListView.java:3423) 
08-03 23:44:02.457: E/AndroidRuntime(875): at android.os.Handler.handleCallback(Handler.java:725) 
08-03 23:44:02.457: E/AndroidRuntime(875): at android.os.Handler.dispatchMessage(Handler.java:92) 
08-03 23:44:02.457: E/AndroidRuntime(875): at android.os.Looper.loop(Looper.java:137) 
08-03 23:44:02.457: E/AndroidRuntime(875): at android.app.ActivityThread.main(ActivityThread.java:5041) 
08-03 23:44:02.457: E/AndroidRuntime(875): at java.lang.reflect.Method.invokeNative(Native Method) 
08-03 23:44:02.457: E/AndroidRuntime(875): at java.lang.reflect.Method.invoke(Method.java:511) 
08-03 23:44:02.457: E/AndroidRuntime(875): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
08-03 23:44:02.457: E/AndroidRuntime(875): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
08-03 23:44:02.457: E/AndroidRuntime(875): at dalvik.system.NativeStart.main(Native Method) 
+1

에서이 활동 로그 캣에서 스택 추적을 게시 할 수 있습니다. – Karakuri

+0

문제가 발생했습니다. 도움에 감사드립니다. – Nexuz

답변

1

당신은 당신의 manifest.xml에

그래서 안드로이드 risis이 예외를 명시 적으로 활동 클래스를 찾을 수

수 없습니다 또 다른 활동을 선언 놓친 {com.android.muc2013/com.android .muc2013.WebActivity}; AndroidManifest.xml에서이 활동을 선언하셨습니까?

선언하여 manifest.xml 파일

<activity android:name="com.android.muc2013.WebActivity"/> 
관련 문제