반응형

이번 포스팅은 ArrayList 객체를 Intent로 전달하는 방법에 대하여 알아보도록 하겠습니다.

 

1. 데이터 클래스의 직렬화

 

우선 인자로 전달하기 위해서는 ArrayList에 담기는 데이터 클래스가 직렬화(Serializable interface를 구현)가 되어 있어야 합니다.

 

public class Subway implements Serializable {

......

 

}

  

2. Intent에 데이터 담기

 

ArrayList <Subway> subwayList = new ArrayList <Subway>();

subwayList.add(new Subway(201, "시청"));

 

Intent intent = new Intent();

intent.putExtra("subway",  subwayList);

startActivity(intent);

 

3. 데이터 꺼내서 사용하기

 

ArrayList <Subway> subwayList = (ArrayList <Subway>) getIntent(). getSerializableExtra("subway");

반응형

'Development > Android' 카테고리의 다른 글

[Android] Activity 호출  (0) 2020.04.08
[Android ] Intent FLAG  (0) 2020.04.08
[Android] MoveEvent Value  (0) 2020.04.08
[Android] Picsasso vs Glide  (0) 2019.10.01
[Android] App Architecture 가이드 2  (0) 2019.09.23
반응형

이번 포스팅은 MoveEvent Value를 알아보도록 하겠습니다.

 

Android에서 onTouchListner를 상속받아 구현하게 되면 override 된 메서드를 구현해야 합니다.

 

오늘은 override 메소드에서 자주 쓰이는  MoveEvent Value를 나열해 보겠습니다.

 

1.  ACTION_DOWN = 0

 

2.  ACTION_UP = 1

 

3.  ACTION_MOVE = 2

 

4.  ACTION_CANCEL = 3

 

5.  ACTION_MASK = 255

 

6.  ACTION_POINTER_2_DOWN = 261

반응형
반응형

안녕하세요.

이번 포스팅은 Android OS 10을 TargetSDKVersion 으로 업그레이드 시 파일 조회하는 기능의 경우 발생할 수 있는 오류에 대하여 알아보도록 하겠습니다.


<Error>

TargetSDKVersion을 28에서 29로 업그레이드만 하였을 뿐인데 파일 조회하는 기능에서 아래와 같은 NullPointException이 발생하였습니다.

W/System.err: java.lang.NullPointerException: Attempt to get length of null array

W/System.err:     at com.eun.sample.core.Cert.a(Unknown Source:15)

W/System.err:     at com.eun.sample.core.Cert.<init>(Unknown Source:61)


<Solution>

Android OS 10이 출시되면서 보안이 많이 강화되었으며 이로 인해 파일 Access 제한이 되었습니다.

이를 해결하기 위해서는 Android Developer 외부저장소 Access 페이지를 참조하였으며, 해결방법을 찾을 수 있었습니다.


1. 가장 간단한 방법입니다.

   AndroidMenifest.xml 파일에 requestLagacyExternalStorage 속성을 true로 주어 기존 외부 저장소를 사용할 수 있도록 설정을 합니다.

이로 인해 앞서 발생하였던 Error 부분은 해결이 되었습니다.

    <manifest ... >
     
<!-- This attribute is "false" by default on apps targeting Android 10 or higher. -->
     
<application android:requestLegacyExternalStorage="true" ... >

        ...
     
</application>
   
</manifest>

또한 아래와 같은 설명을 되어 있으니 참고 하시면 좋을 것 같습니다.

 ★ 참고: 기존 외부 저장소를 사용 설정한 상태에서 앱을 설치하면 앱은 제거될 때까지 이 모드로 유지됩니다. 이 호환성 동작은 나중에 기기가 Android 10 이상을 실행하도록 업그레이드되든, 나중에 앱이 Android 10 이상을 타겟팅하도록 업데이트되든 관계없이 적용됩니다.


2. 좀 더 보완적으로 접근할 수 있는 방법입니다.

   저장소 Access Framework를 사용하여 파일을 조회하는 방법입니다.

   우선 아래에 있는 정보 미디어 컬렉션 중 하나를 선택해 조회할 수 있습니다.

   - 사진 : MediaStore.Image 

   - 동영상 : MediaStore.Video

   - 오디오 : MediaStore.Audio

  Download 디렉토리에 있는 파일을 비롯하여 다른 앱에서 만든 다른 파일에 Acccess 하려면 앱에서 사용자가 특정 파일을 선택하도록 허용하는 

저장소 Access Framework를 사용해야 합니다.


이번 포스팅에서 Android OS 10에서 파일 조회 시 NullPointException이 발생하였을 때 해결할 수 있는 방법에 대하여 알아보았습니다.

반응형

+ Recent posts