수강이 제한됩니다.
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결윤재성의 Java 기반 Android 9.0(pie) App 개발 고급 3단계
에러
Unable to start activity ComponentInfo{com.cartris.a1201_draw_layout/com.cartris.a1201_draw_layout.DrawLayoutActivity}: android.view.InflateException: Binary XML file line #15 in com.cartris.a1201_draw_layout:layout/activity_draw_layout: Binary XML file line #19 in com.cartris.a1201_draw_layout:layout/content_draw_layout: Error inflating class fragment이런 에러가 뜹니다 왜 그런걸까요?? activity_draw_layout 에 있는 코드 내용은 아래와 같습니다 <?xml version="1.0" encoding="utf-8"?><androidx.drawerlayout.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" tools:openDrawer="start"> <include android:id="@+id/app_bar_draw_layout" layout="@layout/app_bar_draw_layout" android:layout_width="match_parent" android:layout_height="match_parent"/> <com.google.android.material.navigation.NavigationView android:id="@+id/nav_view" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="start" android:fitsSystemWindows="true" app:headerLayout="@layout/nav_header_draw_layout" app:menu="@menu/activity_draw_layout_drawer" /></androidx.drawerlayout.widget.DrawerLayout>content_draw_layout 에 있는 코드 내용은 아래와 같습니다 <?xml version="1.0" encoding="utf-8"?><androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior" tools:showIn="@layout/app_bar_draw_layout"> <fragment android:id="@+id/nav_host_fragment_content_draw_layout" android:name="androidx.navigation.fragment.NavHostFragment" android:layout_width="match_parent" android:layout_height="match_parent" app:defaultNavHost="true" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" app:navGraph="@navigation/mobile_navigation" /></androidx.constraintlayout.widget.ConstraintLayout>
- 미해결윤재성의 Java 기반 Android 9.0(pie) App 개발 고급 3단계
툴바 타이틀 폰트 설정하는거 어떻게 하나요...
액션바 지우고 툴바로 바꿨습니다. 안드로이드 스튜디오에 기본 내장된 폰트를 써서 타이틀이름에 적용하고싶은데 어떻게 하나요?
- 미해결윤재성의 Java 기반 Android 9.0(pie) App 개발 고급 3단계
버튼에 백그라운드 이미지 설정 후 클릭 시 이벤트 처리
현재 액션바를 제거한 상태로 버튼으로 추가한 상태입니다. 아래 코드가 가장 오른쪽의 메뉴 아이콘인데 클릭 시 맨 위 사진처럼 동그란 회색의 클릭했다는 느낌의 효과를 주고싶은데 어떻게 해야하나요? <Button android:id="@+id/btn" android:layout_width="30dp" android:layout_height="30dp" android:layout_marginLeft="20dp" android:layout_marginTop="5dp" android:background="@drawable/listicon_1" ></Button>
- 미해결윤재성의 Java 기반 Android 9.0(pie) App 개발 고급 3단계
액션바를 제거하고 버튼으로 배치해서 옵션 메뉴를 구성하고 싶습니다
해당 사진처럼 액션바를 제거하였고 3개의 버튼에 이미지를 넣어 추가하였습니다. 이미지 업로드 버튼, 폴더구분 버튼, 옵션메뉴를 나오게 하는 버튼(앱 정보,테마변경 등등) 그런데 메뉴xml을 만들어서 연결을 해도 안되네요ㅠㅠ... 완전 초짜인지라 ... 가장 오른쪽에 있는 버튼을 클릭하였을때 하위 메뉴출력을 하도록 어떻게 하나요?
- 미해결윤재성의 Java 기반 Android 9.0(pie) App 개발 고급 3단계
갤러리에서 이미지 가져오기가 안됩니다.
강사님 갤러리에서 이미지 가져오기가 안됩니다. 권한등록도 하고 소스코드 강사님이 하신거랑 똑같이 복사 붙여넣기 했는데도 이미지를 가져오지 못하고 있습니다. 확인 부탁드립니다. package kr.co.softcampus.gallerybasic;import androidx.annotation.NonNull;import androidx.annotation.Nullable;import androidx.appcompat.app.AppCompatActivity;import android.Manifest;import android.content.ContentResolver;import android.content.Intent;import android.content.pm.PackageManager;import android.database.Cursor;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Matrix;import android.media.ExifInterface;import android.net.Uri;import android.os.Build;import android.os.Bundle;import android.provider.MediaStore;import android.view.View;import android.widget.ImageView;public class MainActivity extends AppCompatActivity { String [] permission_list = { Manifest.permission.READ_EXTERNAL_STORAGE }; ImageView image1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); image1 = (ImageView)findViewById(R.id.imageView); if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){ requestPermissions(permission_list, 0); } } public void getImageBtn(View view){ Intent intent = new Intent(Intent.ACTION_PICK); intent.setType(MediaStore.Images.Media.CONTENT_TYPE); startActivityForResult(intent, 1); } @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); try{ // 사진을 선택하고 왔을 때만 처리한다. if(resultCode == RESULT_OK){ // 선택한 이미지를 지칭하는 Uri 객체를 얻어온다. Uri uri = data.getData(); // Uri 객체를 통해서 컨텐츠 프로바이더를 통해 이미지의 정보를 가져온다. ContentResolver resolver = getContentResolver(); Cursor cursor = resolver.query(uri, null, null, null, null); cursor.moveToNext(); // 사용자가 선택한 이미지의 경로 데이터를 가져온다. int index = cursor.getColumnIndex(MediaStore.Images.Media.DATA); String source = cursor.getString(index); // 경로 데이터를 통해서 이미지 객체를 생성한다 Bitmap bitmap = BitmapFactory.decodeFile(source); // 이미지의 크기를 조정한다. Bitmap bitmap2 = resizeBitmap(1024, bitmap); // 회전 각도 값을 가져온다. float degree = getDegree(source); Bitmap bitmap3 = rotateBitmap(bitmap2, degree); image1.setImageBitmap(bitmap3); } }catch(Exception e){ e.printStackTrace(); } } public Bitmap resizeBitmap(int targetWith, Bitmap source){ double ratio = (double)targetWith / (double)source.getWidth(); int targetHeight = (int)(source.getHeight() * ratio); Bitmap result = Bitmap.createScaledBitmap(source, targetWith, targetHeight, false); if(result != source){ source.recycle(); } return result; } public float getDegree(String source){ try{ ExifInterface exif = new ExifInterface(source); int degree = 0; int ori = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, -1); switch (ori){ case ExifInterface.ORIENTATION_ROTATE_90 : degree = 90; break; case ExifInterface.ORIENTATION_ROTATE_180 : degree = 180; break; case ExifInterface.ORIENTATION_ROTATE_270 : degree = 270; break; } return (float)degree; }catch(Exception e){ e.printStackTrace(); } return 0.0f; } public Bitmap rotateBitmap(Bitmap bitmap, float degree){ try{ int width = bitmap.getWidth(); int height = bitmap.getHeight(); Matrix matrix = new Matrix(); matrix.postRotate(degree); Bitmap bitmap2 = Bitmap.createBitmap(bitmap, 0, 0, width, height, matrix, true); bitmap.recycle(); return bitmap2; }catch(Exception e){ e.printStackTrace(); } return null; }}androidmanifest.xml <?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="kr.co.softcampus.gallerybasic"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/Theme.GalleryBasic"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/></manifest>
- 미해결윤재성의 Java 기반 Android 9.0(pie) App 개발 고급 3단계
내부저장소 생성 오류
삭제된 글입니다
- 미해결윤재성의 Java 기반 Android 9.0(pie) App 개발 고급 3단계
DrawerLayout 질문있습니다.
삭제된 글입니다
- 미해결윤재성의 Java 기반 Android 9.0(pie) App 개발 고급 3단계
getExternalStoragePublicDirectory() 안드로이드 10
앞으로는 10 을 기준으로 만들어야 하는데 getExternalStoragePublicDirectory대신 사용할수 있는 방법이 있나요?
- 미해결윤재성의 Java 기반 Android 9.0(pie) App 개발 고급 3단계
디렉토리
8분에 디렉토리 생겼는지 확인 할때 안생기면 어떻게 확인 하나요? 안드로이드 SDk version 은 28로 바꾸고 실해 했습니다
- 미해결윤재성의 Java 기반 Android 9.0(pie) App 개발 고급 3단계
썸네일
썸네일이 보이지 않습니다. 안드로이드 스트디오 4.0.1 입니다.
- 미해결윤재성의 Java 기반 Android 9.0(pie) App 개발 고급 3단계
강의ppt공유가능하실까요
정리하며 보려는데, 영상만으로는 좀 시간도 걸려서요..
- 미해결윤재성의 Java 기반 Android 9.0(pie) App 개발 고급 3단계
소스코드 마지막강좌에 게시부탁드립니다
마지막 강좌 제목이 소스코드 인데 다운로드 링크가 없어요
- 미해결윤재성의 Java 기반 Android 9.0(pie) App 개발 고급 3단계
리스트 뷰 네트워크 동기 할때 오류 관련 질문 드립니다.
java.lang.IllegalStateException: The content of the adapter has changed but ListView did not receive a notification. Make sure the content of your adapter is not modified from a background thread, but only from the UI thread. Make sure your adapter calls notifyDataSetChanged() when its content changes. 요즘 이 오류가 계속 떠서 해결하려고 노력중입니다.구글검색해서 알려주는대로 시도 해봤는데 잘 되지 않네요.가끔씩 저 오류가 떠서 튕기는데 아마도 쓰레드가 동시에 여러개 작동하다 보니 생기는 오류인것 같습니다.혹시 해결방법이 있을까요?
- 미해결윤재성의 Java 기반 Android 9.0(pie) App 개발 고급 3단계
네트워크가 다를경우 서버와접속이 불가능한가요?
접속 할수 있는 방법이 없을까요.
- 미해결윤재성의 Java 기반 Android 9.0(pie) App 개발 고급 3단계
getPackagename()함수가 작동 안할때 가 있을까요.
함수가 작동을 안해서 그냥 패키지이름을 수동으로 적어주고 있습니다... 왜 작동 안하는지 모르겠어요... 그냥 다 지우고 앱을 새로 만들어야 할지.... ㅠ ㅠ 뭔가 버그가 있는건지 걱정도 되고.. 혹시 이럴때는 어케 해결해야 할까요.. Log.d로 보면 getpackage() 부분이 공란으로 나옵니다. /storage/emulated/0/Android/data//scan1580536657000.jpg 이렇게 뜹니다. 아래는 변수를 입력한 내용 입니다. 변수를 멤버변수로 선언하면서 값을 넣어버렸어요. 다른클레스에서쓸때는 스테틱으로 해서 쓰고 있습니다. 혹시 이렇게 한게 getPackagername()함수가 작동 안하는 이유가 될수도 있을까요? ------------------------------------------------------ String temp = Environment.getExternalStorageDirectory().getAbsolutePath();String path = temp + "/Android/data/" + getPackageName();//파일이름과 경로 합친 변수String fname = "/scan" + System.currentTimeMillis() + ".jpg";
- 해결됨윤재성의 Java 기반 Android 9.0(pie) App 개발 고급 3단계
쓰레드 질문 입니다.
안녕하세요 메인화면에 여러개의 프래그먼트를 배치시켜서 작업중입니다. 프래그먼트 구성은 리스트 뷰 입니다. 리스트 내용은 이미지와 텍스트 인데요 서버에서 그 내용을 받거나 다시 서버로 업로드 시키면서 화면을 유지 시키려고 합니다. 일단 메인클레스에 각 프래그먼트에서 사용할 해쉬맵과 어레이 리스트 객체를 만들어두고 각 프래그먼트에서 호출해서 사용하고 있습니다. 그러다보니 메인클레스에는 변수와 리스트 객체가 위치하게되고 프래그먼트 클레스에는 어뎁터를 커스터마이징 하는 코드가 위치하게 되었습니다. 여기서 질문입니다. 0. 어뎁터를 메인클레스에만 위치시키고 프래그먼트에서 어뎁터를 갖고와서 사용하는 방법은 할 수 없나요? (만약 이게 된다면 쓰레드 문제도 해결 될것 같은데요..) 1. 데이터를 주고 받는 쓰레드는 메인 클레스와 프래그먼트 클레스중 어디에 위치 시켜야 하나요? (메인클레스에 넣어봤는데 안되네요 프래그먼트 클레스에 넣으니 잘 작동은 하긴하는데 이렇게되면 프래그먼트마다 쓰레드를 계속 만들어줘야 할 것 같습니다..) - 메인클레스에 데이터를 업로드 다운로드 하는 쓰레드를 넣었을경우 질문 2. 혹시 runOnUi를 사용할 수 있는 방법이 있나요?? 쓰레드 클레스는 static 으로 만들어야되네요.. 프래그먼트 클레스에서 사용해야 하므로... 그러면 서브 쓰레드에서 runOnUi 사용못하게 되던데 해결방법이 있을까요? 3. 프래그먼트에 있는 어뎁터를 쓰레드 없이 갱신할 수 있 는 방법이 있을까요? runOnUi를 못쓰니 어뎁터 갱신을 할수 없었습니다. 리스트 객체에 값만 넣어주는 작업까지만 하고 쓰레드가 끝나던데 해결방법이 있을까요? 4. resume 매써드는 메인클레스 외에 화면에서는 작동 안하는 메서드 인가요? 리스트프래그먼트에서 리스트에 어뎁터 달아주는 코드 바로 위에 어뎁터에서 갱신 해주는 코드를 넣어봤지만 작동 안하네요. resume 매써드 이용해도 마찬가지였어요. -프래그먼트 클레스에 데이터 업로드, 다운로드 하는 쓰레드를 만들었을때 질문입니다. 5. getactivity 함수 이용하니까 runOnUi 도 사용할 수 있고, 어뎁터 갱신도 할 수 있고 그래서 그런지 잘 작동 합니다. 그런데 프래그먼트마다 일일히 쓰레드 만들어 줘야만 하나요? 쓰레드가 많이 있으면 앱이 느려질것 같아서 걱정이 됩니다. 혹시 선생님은 쓰레드를 줄이기 위해서 어떤 방법을 많이 사용하시나요? 항상 질문에 답변 잘 해주셔서 감사드립니다. 덕분에 많이 도움이 되었습니다. 잘 모르다 보니 이상하고 난감한 질문을 많이 드린것 같습니다. 대략적인 방향만이라도 알려주시면 감사하겠습니다.
- 해결됨윤재성의 Java 기반 Android 9.0(pie) App 개발 고급 3단계
강좌 순서에서 맨 마지막 소스코드들어가봤는데 파일이 없습니다.
강좌 순서에서 맨 마지막 소스코드들어가봤는데 파일이 없습니다. 웹 브라우저는 크롬 쓰고 있습니다. 혹시 다른곳에 파일이 있을까요?
- 해결됨윤재성의 Java 기반 Android 9.0(pie) App 개발 고급 3단계
전역변수를 클레스 매서드에서 사용할때.
안녕하세요 전역변수를 동일한 클레스의 매서드에서 사용할때 질문 입니다. 동일한 클레스 안에 매서드들이 똑같은 전역변수를 돌려가면서 사용할때 다른 매서드에서 그 변수에 넣은 값을 변경않는 한 다른 매서드에서 호출할때 그 값을 그대로 사용 하는것인지 궁금합니다. 처음에는 그런줄만 알았는데요. 어떨때는 전역변수에 있는 값이 다른 매서드에서 저장한데로 들어가 있다가 갑자기 에러가 떠서 확인해 보면 그 값이 없어지고 null 값이 들어가 있고 그럽니다. 그래서.. 이것을 해결하기 위해서 초기화 생성자를 다 지우기도 하고.. 그냥 전역변수 선언하는 부분에서 변수에 값을 아예 넣어보기도 하고, 매서드마다 파라미터에 전역변수값을 넣어주기도 하고. 그래서 전역변수 변수의 이름만 똑같이 가져와서 매서드 마다 값을(다 같은 값이지만)일일히 넣어 주기도 했는데요. 근본적인 해결방법이 아닌것 같아서 질문 드립니다. 전역변수를 한 매서드에서 입력한 값대로 계속 사용하고 싶습니다. 그리고 그 값이 지워지지 않고 쭉 유지가 됬으면 좋겠는데요. ㅠㅠ 선생님이 올려 놓으신 관련 자바 강의도 몇번 들으면서 이해 해 보려 했지만 좀 힘드네요 도와주세요.
- 해결됨윤재성의 Java 기반 Android 9.0(pie) App 개발 고급 3단계
액션바 커스터 마이징 할때 한 다음에 여기에 팝업메뉴 추가 가능한가요...
액션바 중에서 쓸만한게 많은것 같은데 그것을 같이 쓰면서 동시에 색깔을 바꾸거나 추가 하거나 하는 커스터 마이징도 같이 하고 싶어요. 액션바 커스터 마이징 할때 한 다음에 여기에 팝업메뉴 추가 가능한가요... 아니면 반대로 기존 액션바 그대로 넣고 배경색만 바꾸거나 하는 편집이 가능한가요?
- 해결됨윤재성의 Java 기반 Android 9.0(pie) App 개발 고급 3단계
해결안되는 에러.. Failed to find configured root that contains /null/
로그 에러 메세지 ---------------------------------------------------- Caused by: java.lang.IllegalArgumentException: Failed to find configured root that contains /null/불량1579517621338.jpg <--(파일이름) ---------------------------------------------------- xml 파일 --------------------------------------------------- <paths xmlns:android="http://schemas.android.com/apk/res/android"><external-path name="storage/emulated/0" path="."/></paths>--------------------------------------------------------메인 엑티비티 문제가 되는 매서드-------------------------------------------------------- public void button(View v) { Intent intent = new Intent((MediaStore.ACTION_IMAGE_CAPTURE)); String name = "/불량" + System.currentTimeMillis() + ".jpg"; String pic_path = path + name; File file = new File(pic_path); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { contenturi = FileProvider.getUriForFile(this, "co.co", file); } else { contenturi = contenturi.fromFile(file); } intent.putExtra(MediaStore.EXTRA_OUTPUT, contenturi); startActivityForResult(intent, 0);} ------------------------------------------------------ manifest provider 부분 ----------------------------------------------------- <provider android:authorities="co.co" android:name="androidx.core.content.FileProvider" android:exported="false" android:grantUriPermissions="true"> <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/xml"/></provider>------------------------------------------------------- 구글링 해보니까 xml 파일에 이상이 있다는것 같은데요. 정상 작동하는 앱의 코드를 전부 복사 붙여넣기 해도 저 에러가 뜹니다. 저 에러는 어떤 경우에 발생하는 건가요?