2014-01-09 2 views
0
public class MovieActivity extends ListActivity { 

private ProgressDialog pDialog; 

// URL to get contacts JSON 

private String url = "http://www.kobis.or.kr/kobisopenapi/webservice/rest/boxoffice/searchDailyBoxOfficeList.json?key=165fd244a33a11b50938eacd1fcbe6aa&targetDt=20140107"; 

Calendar calendar = Calendar.getInstance(); 
String curY = String.valueOf(calendar.get(Calendar.YEAR)); 
String curM = String.valueOf(calendar.get(Calendar.MONTH) + 1); 
String curD = String.valueOf(calendar.get(Calendar.DATE) - 1); 
String day = curY + curM + curD; 


// JSON Node names 
private static final String TAG_BOXOFFICERESULT = "boxOfficeResult"; 
private static final String TAG_DAILYBOXOFFICELIST = "dailyBoxOfficeList"; 
private static final String TAG_RNUM = "rnum"; 
private static final String TAG_MOVIENM = "movieNm"; 
private static final String TAG_OPENDT = "openDt"; 

// contacts JSONArray 
JSONArray movies = null; 

// Hashmap for ListView 
ArrayList<HashMap<String, String> > movieList; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    Log.d("Response", ">" + "a"); 
    setContentView(R.layout.activity_movie); 

    Log.d("Response", ">" + "b"); 

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

    Log.d("Response", ">" + "c"); 

    // Calling async task to get json 
    new GetContacts().execute(); 

    Log.d("Response", ">" + "d") 

} 

/** 
* Async task class to get json by making HTTP call 
* */ 
private class GetContacts extends AsyncTask<Void, Void, Void> { 

    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
     // Showing progress dialog 
     pDialog = new ProgressDialog(MovieActivity.this); 
     pDialog.setMessage("Please wait..."); 
     pDialog.setCancelable(false); 
     pDialog.show(); 

    } 

    @Override 
    protected Void doInBackground(Void... arg0) { 
     // Creating service handler class instance 
     ServiceHandler sh = new ServiceHandler(); 

     Log.d("Response", ">" + "1"); 

     // Making a request to url and getting response 
     String jsonStr = sh.makeServiceCall(url, ServiceHandler.GET); 

     Log.d("Response", ">" + "2"); 


     if (jsonStr != null) { 


      try { 

       JSONObject jsonObj = new JSONObject(jsonStr); 


       JSONObject a = jsonObj.getJSONObject(TAG_BOXOFFICERESULT); 


       movies = a.getJSONArray(TAG_DAILYBOXOFFICELIST); 

       for (int i=0; i <movies.length(); i++) { 

        JSONObject c = movies.getJSONObject(i); 
        String rnum = c.getString(TAG_RNUM); 
        String movienm = c.getString(TAG_MOVIENM); 
        String opendt = c.getString(TAG_OPENDT); 

        // tmp hashmap for single contact 
        HashMap<String, String> movie = new HashMap<String, String>(); 

        // adding each child node to HashMap key => value 
        movie.put(TAG_RNUM, rnum); 
        movie.put(TAG_OPENDT, opendt); 
        movie.put(TAG_MOVIENM, movienm); 


        // adding contact to contact list 
        movieList.add(movie); 
       } 


      } catch (JSONException e) { 
       e.printStackTrace(); 

       Log.d("Response: ", "> " + "2b"); 
      } 
     } else { 
      Log.e("ServiceHandler", "Couldn't get any data from the url"); 
     } 

     return null; 
    } 

    @Override 
    protected void onPostExecute(Void result) { 
     super.onPostExecute(result); 

     Log.d("Response", ">" + "2000"); 
     // Dismiss the progress dialog 
     if (pDialog.isShowing()) 
      pDialog.dismiss(); 
     /** 
     * Updating parsed JSON data into ListView 
     * */ 

     Log.d("Response", ">" + 1); 
     ListAdapter adapter = new SimpleAdapter(MovieActivity.this, movieList, R.layout.list_item, 
       new String[] { TAG_RNUM, TAG_OPENDT, TAG_MOVIENM }, new int[] { R.id.rnum, R.id.opendt, R.id.movienm }); 

     Log.d("Response", ">" + R.id.rnum); 
     Log.d("Response", ">" + "1000"); 


     Log.d("Response", ">" + R.id.opendt); 
     Log.d("Response", ">" + "2000"); 
     Log.d("Response", ">" + R.id.movienm); 
     Log.d("Response", ">" + "3000"); 

     setListAdapter(adapter); 
    } 

} 

}Ошибка Asynctask; При изменении активности от другой деятельности

public class MainActivity extends Activity { 

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

    Button btn1 = (Button) findViewById(R.id.button1); 

    Log.e("kjw", "outlistener_main"); 
    btn1.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 

      Log.e("kjw", "inlistener_main"); 

      Intent i = new Intent(getApplicationContext(), MovieActivity.class); 
      startActivity(i); 


     } 
    }); 
    //Intent gi = getIntent(); 
    //if (gi != null) btn1.setText(gi.getExtras().getString("movie")); 
} 

}

Просто, когда я хочу изменить MainActivity от MovieActivity. При работе,

01-09 18:54:16.580: E/AndroidRuntime(30879): FATAL EXCEPTION: AsyncTask #1 
01-09 18:54:16.580: E/AndroidRuntime(30879): java.lang.RuntimeException: An error occured while executing doInBackground() 
01-09 18:54:16.580: E/AndroidRuntime(30879): at android.os.AsyncTask$3.done(AsyncTask.java:299) 
01-09 18:54:16.580: E/AndroidRuntime(30879): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273) 
01-09 18:54:16.580: E/AndroidRuntime(30879): at java.util.concurrent.FutureTask.setException(FutureTask.java:124) 
01-09 18:54:16.580: E/AndroidRuntime(30879): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307) 
01-09 18:54:16.580: E/AndroidRuntime(30879): at java.util.concurrent.FutureTask.run(FutureTask.java:137) 
01-09 18:54:16.580: E/AndroidRuntime(30879): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) 
01-09 18:54:16.580: E/AndroidRuntime(30879): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) 
01-09 18:54:16.580: E/AndroidRuntime(30879): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) 
01-09 18:54:16.580: E/AndroidRuntime(30879): at java.lang.Thread.run(Thread.java:856) 
01-09 18:54:16.580: E/AndroidRuntime(30879): Caused by: java.lang.SecurityException: Permission denied (missing INTERNET permission?) 
01-09 18:54:16.580: E/AndroidRuntime(30879): at java.net.InetAddress.lookupHostByName(InetAddress.java:418) 
01-09 18:54:16.580: E/AndroidRuntime(30879): at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236) 
01-09 18:54:16.580: E/AndroidRuntime(30879): at java.net.InetAddress.getAllByName(InetAddress.java:214) 
01-09 18:54:16.580: E/AndroidRuntime(30879): at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:137) 
01-09 18:54:16.580: E/AndroidRuntime(30879): at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164) 
01-09 18:54:16.580: E/AndroidRuntime(30879): at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119) 
01-09 18:54:16.580: E/AndroidRuntime(30879): at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360) 
01-09 18:54:16.580: E/AndroidRuntime(30879): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:670) 
01-09 18:54:16.580: E/AndroidRuntime(30879): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:509) 
01-09 18:54:16.580: E/AndroidRuntime(30879): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487) 
01-09 18:54:16.580: E/AndroidRuntime(30879): at com.example.test_06.ServiceHandler.makeServiceCall(ServiceHandler.java:71) 
01-09 18:54:16.580: E/AndroidRuntime(30879): at com.example.test_06.ServiceHandler.makeServiceCall(ServiceHandler.java:35) 
01-09 18:54:16.580: E/AndroidRuntime(30879): at com.example.test_06.MovieActivity$GetContacts.doInBackground(MovieActivity.java:117) 
01-09 18:54:16.580: E/AndroidRuntime(30879): at com.example.test_06.MovieActivity$GetContacts.doInBackground(MovieActivity.java:1) 
01-09 18:54:16.580: E/AndroidRuntime(30879): at android.os.AsyncTask$2.call(AsyncTask.java:287) 
01-09 18:54:16.580: E/AndroidRuntime(30879): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) 
01-09 18:54:16.580: E/AndroidRuntime(30879): ... 5 more 
01-09 18:54:16.580: E/AndroidRuntime(30879): Caused by: libcore.io.GaiException: getaddrinfo failed: EAI_NODATA (No address associated with hostname) 
01-09 18:54:16.580: E/AndroidRuntime(30879): at libcore.io.Posix.getaddrinfo(Native Method) 
01-09 18:54:16.580: E/AndroidRuntime(30879): at libcore.io.ForwardingOs.getaddrinfo(ForwardingOs.java:55) 
01-09 18:54:16.580: E/AndroidRuntime(30879): at java.net.InetAddress.lookupHostByName(InetAddress.java:405) 
01-09 18:54:16.580: E/AndroidRuntime(30879): ... 20 more 
01-09 18:54:16.580: E/AndroidRuntime(30879): Caused by: libcore.io.ErrnoException: getaddrinfo failed: EACCES (Permission denied) 
01-09 18:54:16.580: E/AndroidRuntime(30879): ... 23 more 
01-09 18:54:16.590: D/dalvikvm(30879): GC_CONCURRENT freed 179K, 6% free 12523K/13255K, paused 13ms+4ms, total 44ms 
01-09 18:54:16.590: D/dalvikvm(30879): WAIT_FOR_CONCURRENT_GC blocked 13ms 
01-09 18:54:17.735: E/WindowManager(30879): Activity com.example.test_06.MovieActivity has leaked window [email protected] that was originally added here 
01-09 18:54:17.735: E/WindowManager(30879): android.view.WindowLeaked: Activity com.example.test_06.MovieActivity has leaked window [email protected] that was originally added here 
01-09 18:54:17.735: E/WindowManager(30879):  at android.view.ViewRootImpl.<init>(ViewRootImpl.java:407) 
01-09 18:54:17.735: E/WindowManager(30879):  at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:311) 
01-09 18:54:17.735: E/WindowManager(30879):  at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:224) 
01-09 18:54:17.735: E/WindowManager(30879):  at android.view.WindowManagerImpl$CompatModeWrapper.addView(WindowManagerImpl.java:149) 
01-09 18:54:17.735: E/WindowManager(30879):  at android.view.Window$LocalWindowManager.addView(Window.java:554) 
01-09 18:54:17.735: E/WindowManager(30879):  at android.app.Dialog.show(Dialog.java:277) 
01-09 18:54:17.735: E/WindowManager(30879):  at com.example.test_06.MovieActivity$GetContacts.onPreExecute(MovieActivity.java:105) 
01-09 18:54:17.735: E/WindowManager(30879):  at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:586) 
01-09 18:54:17.735: E/WindowManager(30879):  at android.os.AsyncTask.execute(AsyncTask.java:534) 
01-09 18:54:17.735: E/WindowManager(30879):  at com.example.test_06.MovieActivity.onCreate(MovieActivity.java:67) 
01-09 18:54:17.735: E/WindowManager(30879):  at android.app.Activity.performCreate(Activity.java:5206) 
01-09 18:54:17.735: E/WindowManager(30879):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094) 
01-09 18:54:17.735: E/WindowManager(30879):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2074) 
01-09 18:54:17.735: E/WindowManager(30879):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2135) 
01-09 18:54:17.735: E/WindowManager(30879):  at android.app.ActivityThread.access$700(ActivityThread.java:140) 
01-09 18:54:17.735: E/WindowManager(30879):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1237) 
01-09 18:54:17.735: E/WindowManager(30879):  at android.os.Handler.dispatchMessage(Handler.java:99) 
01-09 18:54:17.735: E/WindowManager(30879):  at android.os.Looper.loop(Looper.java:137) 
01-09 18:54:17.735: E/WindowManager(30879):  at android.app.ActivityThread.main(ActivityThread.java:4946) 
01-09 18:54:17.735: E/WindowManager(30879):  at java.lang.reflect.Method.invokeNative(Native Method) 
01-09 18:54:17.735: E/WindowManager(30879):  at java.lang.reflect.Method.invoke(Method.java:511) 
01-09 18:54:17.735: E/WindowManager(30879):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1036) 
01-09 18:54:17.735: E/WindowManager(30879):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:803) 
01-09 18:54:17.735: E/WindowManager(30879):  at dalvik.system.NativeStart.main(Native Method)  

произошло.

Я не знаю, почему это произошло, потому что MovieActivity точно работает в других проектах. Помоги мне..!

+0

добавить весь LogCat – marcinj

+0

Я бы предположил, что вы поставили точку останова в фоновом методе и продолжаете линию за строкой, а затем сообщите нам, по которой происходит ошибка. –

+0

@marcim_j ... Я добавил много e logcat – sunsets

ответ

0

Вы добавили разрешения сети в вашем файле манифеста и добавить это разрешение слишком

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
+0

Спасибо! Глупо, я не добавил . Большое спасибо! – sunsets

+0

Тогда выберите этот вопрос как ответ –

1
java.lang.SecurityException: Permission denied (missing INTERNET permission?) 

Похоже, вы пропустили разрешение Интернет в манифесте:

<uses-permission android:name="android.permission.INTERNET" /> 
+0

Большое вам спасибо! Я решил! – sunsets

Смежные вопросы