마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

뷰에 나오는 화면 저장하기가 안됩니다.

0 추천
스크레치 아트 프로그램을 제작중인데요 기능상 거의 구현이 끝나가는데 아무리 해도 화일저장하기가 안되네요

옵션눌러서 저장하기 누르면 아무동작도 하지 않습니다. 여기저기 검색도 많이 해보고 소스도 많이 바꿔봤는데

저장하기 누르면 그냥 먹통이네요. 심지어 토스트도 동작하지 않습니다.

뭐가 잘못된걸까요?

뷰는 이미지뷰를 상속받고 배경은 그라디언트로 덮어지는 검정색은 이미지로 덮어서 그걸 지워가는 방식입니다.

 

manifest 내용

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

 

==================================================================================================

 

저장하기 내용 (Activity 안에 위치)

 

        sv = (ScratchView)findViewById(R.id.scratchView);

 

private void savePicture(){

 

        sv.buildDrawingCache();

        Bitmap saveView = sv.getDrawingCache();

        File dir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);

        if(!dir.exists())

            dir.mkdirs();

        FileOutputStream fos;

        try {

            fos = new FileOutputStream(Environment.getExternalStorageDirectory().toString() + "/capture.jpeg");

            saveView.compress(Bitmap.CompressFormat.JPEG, 100, fos);

            Toast.makeText(getApplicationContext(), "저장완료", Toast.LENGTH_SHORT).show();

        } catch (FileNotFoundException e) {

            e.printStackTrace();

        }

        }

 

==================================================================================================

 

Layout xml 화일

 

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:id="@+id/relative"

    >

    <LinearLayout

        android:id="@+id/main"

        android:layout_width="match_parent"

        android:layout_height="match_parent"

        android:orientation="vertical">

 

        <com.arthur.leo.scratchartbook.ScratchView

            android:id="@+id/scratchView"

            android:layout_width="match_parent"

            android:layout_height="match_parent"

            android:layout_gravity="center"

            android:layout_weight="1"

            >

        </com.arthur.leo.scratchartbook.ScratchView>

 

    </LinearLayout>

 

</RelativeLayout>
익명사용자 님이 2016년 10월 6일 질문

1개의 답변

0 추천
토스트가 나오지 않았단건 에러를 try에서 캡쳐 한것인데....

해당 에러로그를 보여주시면 더 빠른 해결이 가능하겠네요~~!
ThisPlus (46,920 포인트) 님이 2016년 10월 6일 답변
답변 감사합니다. 알려주신대로 해도 되질 않네요
옵션에서 메소드 호출을 제가 잘못하는건지 그냥 먹통이고
다른 여러가지 방법을 해봐도 안되는것 보면 어딘가 잘못되었다는것 같은데...
번거로우시더라도  다시한번 확인해 주시면 정말 감사하겠습니다.
https://www.dropbox.com/s/2pajxdgusb7ymn6/ScratchArtBook.zip?dl=0

8000자 이상은 쓸수가 없는것 같아서 소스전체를 압축했습니다.
안드로이드 스튜디오 프로젝트 폴더 전체입니다.
메뉴 아이템 값이 중복 대네요
메뉴 아이템 값을 변경해주세요
메뉴아이템 값이라면


        SubMenu subMenu = menu.addSubMenu(0, 0, 0, "선굵기");
        subMenu.add(1, 1, 0, "1");
        subMenu.add(1, 2, 1, "2");
        subMenu.add(1, 3, 2, "3");
        subMenu.add(1, 4, 3, "4");
        subMenu.add(1, 5, 4, "5");
        subMenu.setGroupCheckable(1, true, true);

        menu.add(2, 0, 6, "지우기");
        menu.add(3, 1, 7, "그림저장");

이걸 말씀해주신건가요? 주말에도 계속 찾아봤는데 찾을수가 없어서
저건가 하고 위와같이 변경을 했는데도 결과는 같네요 ㅜㅜ 무반응 입니다.
함수를 사용하실때는 인자들을 확인해주세요~~!
인자중에 itemId를 정하는 인자가 무엇인가요?
지금 현재 소스에서 해당 인자를 찾아서 중복값이 없도록 해주시면 됩니다.
정 모르시겠으면 API문서를 찾아보는 법도 방법입니다.
친절하신 설명 정말 감사합니다. 덕분에 API문서 찾아보고 알게 되었습니다.
그런데 중복값이 있으면 에러가 나야 하는데 에러가 안나는게 이상하네요.
직접 찾아보니 더 좋은 공부가 되네요.

MenuItem    add(int groupId, int itemId, int order, CharSequence title)

이부분으로 가운데 숫자가 중복이 되어있었네요 정말 감사합니다.
...