앱이 충돌하지만 방법이 여전히 작동합니까?

안 키트 샤르마

내 목록보기에서 항목을 삭제하려고하지만 ArrayOutOfBoundException이 계속 발생하지만 내 로그는 내 Localhost에서 성공적으로 삭제 된 것으로 표시되며 다시 열면 변경 사항이 반영됩니다.

내 앱이 중단되는 예외를 해결하는 방법을 모르십니까? 어떤 아이디어?

비동기 작업이있는 클래스 :

  @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_view_all_locations);
        // Hashmap for ListView
        profileList = new ArrayList<HashMap<String, String>>();

        deleteLocation = (Button) findViewById(R.id.deleteLocation);
        locationCount = (TextView) findViewById(R.id.locationCount);
        lo = (ListView) findViewById(android.R.id.list);

        //setup adapter first //now no items, after getting items (LoadAllLocations) will update it
        adapter = new SimpleAdapter(
                ViewAllLocations.this, profileList,
                R.layout.locationitem, new String[]{TAG_ID,
                TAG_LATITUDE, TAG_LONGITUDE},
                new int[]{R.id.id, R.id.latitude, R.id.longitude});

        // updating listview
        setListAdapter(adapter);

        // Loading products in Background Thread
        new LoadAllLocation().execute();

        // getting product details from intent
        Intent i = getIntent();

        // getting product id (pid) from intent
        id = i.getStringExtra(TAG_ID);

        // Get listview
        ListView lo = getListView();

        lo.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                new DeleteLocation(position).execute();
                Map<String, String> item = profileList.get(position);
                String selectedItemId = item.get(TAG_ID);
                new DeleteLocation(position).execute(selectedItemId);

            }
        });

    }

    /**
     * **************************************************************
     * Background Async Task to Delete Product
     */
    class DeleteLocation extends AsyncTask<String, String, Integer> {

        int deleteItemPosition;

        public DeleteLocation(int position) {
// TODO Auto-generated constructor stub
            this.deleteItemPosition = position;
        }

        /**
         * Before starting background thread Show Progress Dialog
         */
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            //pDialog = new ProgressDialog(ViewAllLocations.this);
            //pDialog.setMessage("Deleting Location...");
            //pDialog.setIndeterminate(false);
            //pDialog.setCancelable(true);
//            pDialog.show();
        }

        /**
         * Deleting product
         */
        protected Integer doInBackground(String... args) {

            String selectedId = args[0];

            // Check for success tag
            int success = 0; //0=failed 1=success
            try {
                // Building Parameters
                List<NameValuePair> params = new ArrayList<NameValuePair>();
                params.add(new BasicNameValuePair("id", selectedId));

                // getting product details by making HTTP request
                JSONObject json = jsonParser.makeHttpRequest(
                        url_delete_profile, "POST", params);

                // check your log for json response
                Log.d("Delete Product", json.toString());

                // json success tag
                success = json.getInt(TAG_SUCCESS);
                //if (success == 1) {
                // product successfully deleted
                // notify previous activity by sending code 100
                // Intent i = getIntent();
                // send result code 100 to notify about product deletion
                //setResult(100, i);

                //you cant update UI on worker thread, it must be done on UI thread
                // Toast.makeText(getApplicationContext(), "Location Deleted",
                // Toast.LENGTH_SHORT).show();
                //finish();
                // }
            } catch (JSONException e) {
                e.printStackTrace();
            }

            return success;
        }


        /**
         * After completing background task Dismiss the progress dialog
         * *
         */
        protected void onPostExecute(Integer result) {
            // dismiss the dialog once product deleted

            if (result == 1) {
                    //success
                   //delete from list and update listview
                profileList.remove(deleteItemPosition);
                adapter.notifyDataSetChanged();
                //pDialog.dismiss();
            } else {
            //failed
            }

        }

    }

    /**
     * Background Async Task to Load all product by making HTTP Request
     */
    class LoadAllLocation extends AsyncTask<String, String, Integer> {
        int success;

        /**
         * Before starting background thread Show Progress Dialog
         */
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            pDialog = new ProgressDialog(ViewAllLocations.this);
            pDialog.setMessage("Loading Locations. Please wait...");
            pDialog.setIndeterminate(false);
            pDialog.setCancelable(false);
            pDialog.show();
        }

        /**
         * getting All products from url
         */
        protected Integer doInBackground(String... args) {
            // Building Parameters
            List<NameValuePair> params = new ArrayList<NameValuePair>();
            // getting JSON string from URL
            JSONObject json = jsonParser.makeHttpRequest(url_all_profile, "GET", params);

            // Check your log cat for JSON reponse
            Log.d("All Profiles: ", json.toString());

            try {
                // Checking for SUCCESS TAG
                success = json.getInt(TAG_SUCCESS);

                if (success == 1) {
                     // products found
                    // Getting Array of Products
                    userprofile = json.getJSONArray(TAG_LOCATION);

                    // looping through All Products
                    for (int i = 0; i < userprofile.length(); i++) {
                        JSONObject c = userprofile.getJSONObject(i);

                        // Storing each json item in variable
                        String id = c.getString(TAG_ID);
                        String latitude = c.getString(TAG_LATITUDE);
                        String longitude = c.getString(TAG_LONGITUDE);


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

                        // adding each child node to HashMap key => value
                        map.put(TAG_ID, id);
                        map.put(TAG_LATITUDE, latitude);
                        map.put(TAG_LONGITUDE, longitude);


                        // adding HashList to ArrayList
                        profileList.add(map);
                    }
                } else {
                    // no products found
                    // Launch Add New product Activity
                    //Intent i = new Intent(getApplicationContext(),
                    // UserLocation.class);
                    // Closing all previous activities
                    // i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                    // startActivity(i);
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }

            return success;
        }

        /**
         * After completing background task Dismiss the progress dialog
         * *
         */
        protected void onPostExecute(Integer result) {
            // dismiss the dialog after getting all products
            pDialog.dismiss();
            locationCount.setText("" + profileList.size());
            if (result == 1) {
            //success
            //update adapter items
                adapter.notifyDataSetChanged();
            } else {
            //failed
            //launch activity here
            }


        }

    }

로그 : 삭제 성공했지만 여전히 오류가 있습니까?

04-25 20:08:32.463  22736-23492/com.example.ankhit.saveme E/AndroidRuntime﹕ FATAL EXCEPTION: AsyncTask #2
    java.lang.RuntimeException: An error occured while executing doInBackground()
            at android.os.AsyncTask$3.done(AsyncTask.java:299)
            at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
            at java.util.concurrent.FutureTask.setException(FutureTask.java:219)
            at java.util.concurrent.FutureTask.run(FutureTask.java:239)
            at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
            at java.lang.Thread.run(Thread.java:856)
     Caused by: java.lang.ArrayIndexOutOfBoundsException: length=0; index=0
            at com.example.ankhit.saveme.ViewAllLocations$DeleteLocation.doInBackground(ViewAllLocations.java:144)
            at com.example.ankhit.saveme.ViewAllLocations$DeleteLocation.doInBackground(ViewAllLocations.java:117)
            at android.os.AsyncTask$2.call(AsyncTask.java:287)
            at java.util.concurrent.FutureTask.run(FutureTask.java:234)
            at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
            at java.lang.Thread.run(Thread.java:856)
04-25 20:08:32.713  22736-22736/com.example.ankhit.saveme D/AbsListView﹕ unregisterIRListener() is called
04-25 20:08:32.733  22736-23498/com.example.ankhit.saveme D/Delete Product﹕ {"message":"Profile successfully deleted","success":1}
길잡이

귀하의 문제는 여기에서 발생합니다

new DeleteLocation(position).execute();
Map<String, String> item = profileList.get(position);
String selectedItemId = item.get(TAG_ID);
new DeleteLocation(position).execute(selectedItemId);

두 개의 개별 작업을 실행하고 있지만 두 번째 작업에만 매개 변수가 제공됩니다. 따라서 첫 번째 작업

new DeleteLocation(position).execute();

여기에 예외가 발생합니다.

protected Integer doInBackground(String... args) {
    String selectedId = args[0];
    ...
}

args[0]인수가에 전달되지 않았기 때문에 범위를 벗어났습니다 execute.

두 번째 작업은 다른 스레드에서 수행되고 첫 번째 작업의 예외가 호출 스택으로 다시 전달되기 전에 완료되도록 관리합니다. 이것이 여전히 "작동"하는 이유입니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Git은 이전 해결 방법을 사용하여 충돌을 해결했지만 여전히 "자동 병합 실패"라고합니다.

분류에서Dev

때로는 GUI가 느리게 응답하거나 전혀 응답하지 않거나 충돌하는 것처럼 보이지만 커서는 여전히 빠르게 응답합니다. 마우스 포인터는 어떻게 작동합니까?

분류에서Dev

내 앱이 충돌하지만 시뮬레이터에서 작동합니다.

분류에서Dev

로그인 또는 가입 후 앱이 충돌하지만 스 와이프하여 종료하고 다시 열면 작동합니다.

분류에서Dev

iOS 7.0 플랫폼의 std :: string :: size ()에서 앱이 충돌하지만 iOS 6.0 이전 버전에서는 제대로 작동합니다.

분류에서Dev

충돌 감지는 잘 작동하지만 여러 충돌이 발생하기 때문에 점수가 급등합니다. (파이 게임)

분류에서Dev

Android Kitkat 4.4.4에서 실행하려고하면 앱이 충돌하지만 Android 5 및 6 버전에서는 제대로 작동합니다.

분류에서Dev

병합 충돌이 여전히 병합 될 수 있습니까?

분류에서Dev

Windows 방화벽 및 라우터를 통해 허용 된 앱이 여전히 작동하지 않습니까?

분류에서Dev

프록시가있는 React 앱은 heroku에서 작동하지 않지만 이전 앱은 작동합니까?

분류에서Dev

FragmentTest 앱이 작동하지 않고 내 앱이 계속 충돌합니다.

분류에서Dev

BB 10 앱이 장치에서 충돌하지만 시뮬레이터에서는 잘 작동합니다.

분류에서Dev

처음 설치할 때 앱이 충돌하지만 다시 설치하면 작동합니다.

분류에서Dev

startService ()는 API 17에서 잘 작동하지만 더 높은 API를 사용하면 앱이 충돌합니다.

분류에서Dev

잘못된 열 이름이지만 여전히 작동합니다.

분류에서Dev

텍스트 및 이미지를 사용하여 사용자 지정 목록보기를 만드는 동안 앱이 충돌합니다.

분류에서Dev

모든 Firebase 종속성의 버전이 동일하지만 시작 직후 앱이 여전히 다운 됨

분류에서Dev

/ etc / group이 잘못 선언 된 것처럼 보이지만 여전히 작동합니까?

분류에서Dev

gnubin의 잘못된 링크이지만 여전히 작동합니다.

분류에서Dev

Qt Creator는 시작시 충돌하지만 이전에는 작동했습니다.

분류에서Dev

힘내 충돌하지만 두 블록이 동일합니다.

분류에서Dev

다른 앱이 작성하는 동안 파일을 안전하게 복사하는 방법, 두 프로그램이 모두 충돌하지 않는지 확인

분류에서Dev

이전 활동을 반환하는 동안 충돌을 방지하는 방법?

분류에서Dev

Android 앱은 Google Play에서 다운로드 할 때 충돌하지만 로컬 개발자에서는 잘 작동합니다. 이유는 무엇입니까?

분류에서Dev

법선이 변형되지만 조명이 여전히 이상합니까?

분류에서Dev

json을 가져 오지 않고 django api 게시물이 여전히 작동합니까?

분류에서Dev

IOS 앱은 iTunes 버전에서 충돌했지만 로컬 시뮬레이터 및 실제 장치 테스트에서는 잘 작동합니다.

분류에서Dev

전체 파일에서 서브 루틴을 실행하지만 세그먼트에서 제대로 작동하면 Excel이 충돌합니다.

분류에서Dev

내 프래그먼트 셰이더에서 변수를 이동하면 작동하지 않거나 내 PC가 완전히 충돌합니다.

Related 관련 기사

  1. 1

    Git은 이전 해결 방법을 사용하여 충돌을 해결했지만 여전히 "자동 병합 실패"라고합니다.

  2. 2

    때로는 GUI가 느리게 응답하거나 전혀 응답하지 않거나 충돌하는 것처럼 보이지만 커서는 여전히 빠르게 응답합니다. 마우스 포인터는 어떻게 작동합니까?

  3. 3

    내 앱이 충돌하지만 시뮬레이터에서 작동합니다.

  4. 4

    로그인 또는 가입 후 앱이 충돌하지만 스 와이프하여 종료하고 다시 열면 작동합니다.

  5. 5

    iOS 7.0 플랫폼의 std :: string :: size ()에서 앱이 충돌하지만 iOS 6.0 이전 버전에서는 제대로 작동합니다.

  6. 6

    충돌 감지는 잘 작동하지만 여러 충돌이 발생하기 때문에 점수가 급등합니다. (파이 게임)

  7. 7

    Android Kitkat 4.4.4에서 실행하려고하면 앱이 충돌하지만 Android 5 및 6 버전에서는 제대로 작동합니다.

  8. 8

    병합 충돌이 여전히 병합 될 수 있습니까?

  9. 9

    Windows 방화벽 및 라우터를 통해 허용 된 앱이 여전히 작동하지 않습니까?

  10. 10

    프록시가있는 React 앱은 heroku에서 작동하지 않지만 이전 앱은 작동합니까?

  11. 11

    FragmentTest 앱이 작동하지 않고 내 앱이 계속 충돌합니다.

  12. 12

    BB 10 앱이 장치에서 충돌하지만 시뮬레이터에서는 잘 작동합니다.

  13. 13

    처음 설치할 때 앱이 충돌하지만 다시 설치하면 작동합니다.

  14. 14

    startService ()는 API 17에서 잘 작동하지만 더 높은 API를 사용하면 앱이 충돌합니다.

  15. 15

    잘못된 열 이름이지만 여전히 작동합니다.

  16. 16

    텍스트 및 이미지를 사용하여 사용자 지정 목록보기를 만드는 동안 앱이 충돌합니다.

  17. 17

    모든 Firebase 종속성의 버전이 동일하지만 시작 직후 앱이 여전히 다운 됨

  18. 18

    / etc / group이 잘못 선언 된 것처럼 보이지만 여전히 작동합니까?

  19. 19

    gnubin의 잘못된 링크이지만 여전히 작동합니다.

  20. 20

    Qt Creator는 시작시 충돌하지만 이전에는 작동했습니다.

  21. 21

    힘내 충돌하지만 두 블록이 동일합니다.

  22. 22

    다른 앱이 작성하는 동안 파일을 안전하게 복사하는 방법, 두 프로그램이 모두 충돌하지 않는지 확인

  23. 23

    이전 활동을 반환하는 동안 충돌을 방지하는 방법?

  24. 24

    Android 앱은 Google Play에서 다운로드 할 때 충돌하지만 로컬 개발자에서는 잘 작동합니다. 이유는 무엇입니까?

  25. 25

    법선이 변형되지만 조명이 여전히 이상합니까?

  26. 26

    json을 가져 오지 않고 django api 게시물이 여전히 작동합니까?

  27. 27

    IOS 앱은 iTunes 버전에서 충돌했지만 로컬 시뮬레이터 및 실제 장치 테스트에서는 잘 작동합니다.

  28. 28

    전체 파일에서 서브 루틴을 실행하지만 세그먼트에서 제대로 작동하면 Excel이 충돌합니다.

  29. 29

    내 프래그먼트 셰이더에서 변수를 이동하면 작동하지 않거나 내 PC가 완전히 충돌합니다.

뜨겁다태그

보관