2014-04-12 2 views
0

사이트를 사용할 수없는 경우 내 앱이 다운됩니다. 그것을 고치는 방법?사이트를 사용할 수없는 경우 Android 앱이 다운 됨

Intent FirstIntent = new Intent().setClass(this, RssChannelActivity.class); 
    FirstIntent.putExtra("rss-url", "http://rss-link"); 
    String FirstTabName = getResources().getString(R.string.tab_1);  
    TabSpec FirstTabSpec = tabHost.newTabSpec(FirstTabName) 
       .setIndicator(FirstTabName, getResources().getDrawable(R.drawable.rss_tab_1)) 
       .setContent(FirstIntent); 
    tabHost.addTab(FirstTabSpec); 

AsyncTask를 :

@Override 
    protected List<RssItem> doInBackground(String... urls) { 
     try { 
      // Create RSS reader 
      RssReader rssReader = new RssReader(urls[0]); 

      // Parse RSS, get items 
      return rssReader.getItems(); 

     } catch (Exception e) { 
      Log.e("RssChannelActivity", e.getMessage()); 
     } 

     return null; 
    } 

    @Override 
    protected void onPostExecute(List<RssItem> result) { 

     // Get a ListView from the RSS Channel view 
     ListView itcItems = (ListView) findViewById(R.id.rssChannelListView); 

     // Create a list adapter 
     ArrayAdapter<RssItem> adapter = new ArrayAdapter<RssItem>(local,android.R.layout.simple_list_item_1, result); 
     // Set list adapter for the ListView 
     itcItems.setAdapter(adapter); 

     // Set list view item click listener 
     itcItems.setOnItemClickListener(new ListListener(result, local)); 
    } 

로그 캣 : 당신은 당신의 결과를 확인해야

04-12 21:17:49.496: D/dalvikvm(20954): GC_FOR_ALLOC freed 373K, 3% free 18044K/18448K, paused 11ms, total 11ms 
04-12 21:18:02.926: E/RssChannelActivity(20954): At line 45, column 246: not well-formed (invalid token) 
04-12 21:18:02.926: D/AndroidRuntime(20954): Shutting down VM 
04-12 21:18:02.936: W/dalvikvm(20954): threadid=1: thread exiting with uncaught exception (group=0x41b62ba8) 
04-12 21:18:02.956: D/dalvikvm(20954): GC_FOR_ALLOC freed 571K, 4% free 17986K/18588K, paused 22ms, total 23ms 
04-12 21:18:02.956: E/AndroidRuntime(20954): FATAL EXCEPTION: main 
04-12 21:18:02.956: E/AndroidRuntime(20954): Process: package.name, PID: 20954 
04-12 21:18:02.956: E/AndroidRuntime(20954): java.lang.NullPointerException 
04-12 21:18:02.956: E/AndroidRuntime(20954): at android.widget.ArrayAdapter.getCount(ArrayAdapter.java:330) 
04-12 21:18:02.956: E/AndroidRuntime(20954): at android.widget.ListView.setAdapter(ListView.java:480) 
04-12 21:18:02.956: E/AndroidRuntime(20954): at package.name.RssChannelActivity$GetRSSDataTask.onPostExecute(RssChannelActivity.java:69) 
04-12 21:18:02.956: E/AndroidRuntime(20954): at package.name.RssChannelActivity$GetRSSDataTask.onPostExecute(RssChannelActivity.java:1) 
04-12 21:18:02.956: E/AndroidRuntime(20954): at android.os.AsyncTask.finish(AsyncTask.java:632) 
04-12 21:18:02.956: E/AndroidRuntime(20954): at android.os.AsyncTask.access$600(AsyncTask.java:177) 
04-12 21:18:02.956: E/AndroidRuntime(20954): at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:645) 
04-12 21:18:02.956: E/AndroidRuntime(20954): at android.os.Handler.dispatchMessage(Handler.java:102) 
04-12 21:18:02.956: E/AndroidRuntime(20954): at android.os.Looper.loop(Looper.java:136) 
04-12 21:18:02.956: E/AndroidRuntime(20954): at 
android.app.ActivityThread.main(ActivityThread.java:5017) 
04-12 21:18:02.956: E/AndroidRuntime(20954): at java.lang.reflect.Method.invokeNative(Native Method) 
04-12 21:18:02.956: E/AndroidRuntime(20954): at java.lang.reflect.Method.invoke(Method.java:515) 
04-12 21:18:02.956: E/AndroidRuntime(20954): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 
04-12 21:18:02.956: E/AndroidRuntime(20954): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
04-12 21:18:02.956: E/AndroidRuntime(20954): at dalvik.system.NativeStart.main(Native Method) 
+1

logcat을 게시하십시오. –

+0

@SimplePlan이 업데이트되었습니다. – user3526808

+0

이제'RssChannelActivity' 코드를 게시하십시오. –

답변

0

onPostExecute()에 널 (null)이 아닙니다. NullPointerExceptions을 방지하기 위해 변수를 초기화하기 전에 초기화 된 변수가 있는지 확인하는 것이 좋습니다.

@Override 
protected void onPostExecute(List<RssItem> result) { 

    if (result == null) { 
     // Do something when no result is found 
     return; 
    } 

    // Get a ListView from the RSS Channel view 
    ListView itcItems = (ListView) findViewById(R.id.rssChannelListView); 

    // Create a list adapter 
    ArrayAdapter<RssItem> adapter = new ArrayAdapter<RssItem>(local,android.R.layout.simple_list_item_1, result); 
    // Set list adapter for the ListView 
    itcItems.setAdapter(adapter); 

    // Set list view item click listener 
    itcItems.setOnItemClickListener(new ListListener(result, local)); 
} 
+0

onPostExecute ... 예를 들어? – user3526808

+0

내 편집을 참조하십시오. null 일 때 어댑터에서'result'를 사용하고 있습니다. 참조를 시도하기 전에 null인지 아닌지 먼저 확인해야합니다. – dharms

관련 문제