[최소 구현 함수]- onCreate() : fragment가 생성될 때 호출 함.- onCreateView() : fragment가 UI를 최초로 그릴때 호출. fragment layout의 루트인 View를 리턴. UI가 없을 경우 null 리턴.- onPause() : fragment를 떠날 때 호출. 보통 저장을 수행 [Runtime에 Fragment를 Activity에 추가]- FragmentManager를 사용하여 FragmentTransaction을 통해 fragment를 런타임에 컨트롤- Fragment를 제거하거나 replace하려면 initial fragment를 onCreate() 함수에 추가- 런타임에 Fragment를 사용하려면 fragment가 살 수 있는 View를 가져야 함-..
Activity에 Fragment를 추가하기 위해서는 FragmentManager, FragmentTransaction을 사용한다. 123FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();transaction.add(R.id.fragment_container, userFragment);transaction.commit();Colored by Color Scriptercs add(Fragmemt fragment, String tag) add 메소드의 첫번째 파라미터는 해당 Fragment가 포함될 ViewGroup을 나타냄.Fragment의 변경이 있을 때 반드시 commit()메소드를 호출하여 변경사항을 반영해..
상속받는 Activity에 따라 AlertDialog가 달라지는 문제를 기본 테마를 지정함으로서 해결 123AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder( new ContextThemeWrapper(this, android.R.style.Theme_DeviceDefault_Light));cs new ContextTemeWrapper()을 빌더에 넣어주면 끝~ 스타일 테마는 원하는 대로 선택.
상세보기에서 내용을 수정하고 finish()를 통해 이전화면으로 돌아왔을 때 ListView의 내용이 변경되지 않는 문제 발생.adapterName.notifyDataSetChanged()를 이용하면 된다는데 내가 만든 방식에는 적용되지 않음. onResume()에서 뭔가를 하면 될거 같아 찾아본 결과.데이터를 갱신하여 adapter를 호출하면 된다고 함. onResume에서 adapter에 있는 메소드를 호출하여 변경된 데이터를 전달12345@Overridepublic void onResume() { super.onResume(); adapterName.upDateItemList(dbHelper.queryName());}Colored by Color Scriptercs adapter내에 DataSet을..
갤러리를 만드는데 RecyclerView와 CardView를 이용하여 만듬.각 이미지를 선택 시 ViewPager로 진입하여 선택된 이미지를 보여주도록 함. 처음에는 각 이미지의 ID값을 넘겨 해당 이미지를 보여주도록 하였는데ViewPager에서 받는 값이 이미지 ID값이다 보니 원하는 방향으로 이미지들이 정렬되지 않는 문제 발생. 워낙 기초가 없다보니 막무가네 식으로 ArrayList를 Reverse 시켜보기도 하고 데이터 베이스 쿼리를 바꿔보기도 하고 별의별 방법을 다 써봄.문제는 이미지의 ID값이 아닌 Position값을 넘겨야 되는데 넘길 방법을 모르니 계속 헤멜 수 밖에...OnItemClickListener 도 적용 되지 않아 OnClickListener로 만든 상태... 찾아낸 방법은 Vie..
아이디, 비밀번호 등 엔터키가 들어가면 안되는 영역에 활용 가능12345678910editTextName.setOnKeyListener(new View.OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { if (keyCode == event.KEYCODE_ENTER) { return true; } return false; }});Colored by Color Scriptercs [keyEvent 관련 참고]http://developer.android.com/intl/es/reference/android/view/KeyEvent.html
addTextChangeListener EditText 내에 텍스트 입력 여부를 체크하여 텍스트 삭제버튼 또는 저장 시 Alert메세지를 띄울 수 있음. 1234567891011121314151617editTextName.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { // 입력되는 텍스트에 변화가 있을 때 } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { // 입력이 끝났을 때 } @Override pub..
FullScreenMode에서 SoftKeyboard 활성 시 버튼의 위치를 키패드 위로 변경하고 싶은데 일반적인 방법으로는 지원되지 않음. 기본적인 방법으로는 1. Manifest 에서 activity 안에 android:windowSoftInputMode="stateHidden|adjustResize" (또는 adjustPan) 2. 자바 코드에서 getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN); SOFT_INPUT_ADJUST_PAN (Input영역 밀어 올리기) SOFT_INPUT_ADJUST_RESIZE (UI 리사이징) 위 방법으로 해 봤지만 적용되지 않아 검색해 본 결과안드로이드 자체에서 FullSc..
123456789101112private void shareImage() { Intent share = new Intent(Intent.ACTION_SEND); share.setType("image/*"); // setType("image/png"); OR for jpeg: setType("image/jpeg") String imagePath = Environment.getExternalStorageDirectory() + "/myImage.png"; File imageFileToShare = new File(imagePath); Uri uri = Uri.fromFile(imageFileToShare); share.putExtra(Intent.EXTRA_STREAM, uri); startActivity(..
ViewPager를 이용하여 갤러리를 만드는데 개발 초짜로서 여간 문제가 많은게 아니었다.특히나 View마다 각각 다른 데이터를 노출하고 싶은데 검색을 통해 알아낸 방법으로는 position값만 전달이 가능했던 것. 일단 내가 처음으로 이용한 방법은 List로 배열을 만들어 넘기는 것이었으나 어찌된 것인지 List에서는 position값을 가져오지 못하는 문제가 발생했다.이에 String으로 ArrayList를 다시 만들어 position값을 전달하도록 변경하였다. 1234567891011121314151617public ArrayList selectAllPhotoString() { ArrayList photoList = new ArrayList(); String selectAllQuery = "SELE..
[요일 알아 오기]1234567891011121314151617181920212223private String doDayOfWeek() { Calendar cal = Calendar.getInstance(); String strWeek = null; int nWeek = cal.get(Calendar.DAY_OF_WEEK); if (nWeek == 1) { strWeek = "일요일"; } else if (nWeek == 2) { strWeek = "월요"; } else if (nWeek == 3) { strWeek = "화요일"; } else if (nWeek == 4) { strWeek = "수요일"; } else if (nWeek == 5) { strWeek = "목요일"; } else if (nW..
[GPS정보 가져오기]http://www.devblog.kr/r/8y0gFPAvJ2j8MWIVVXucyP9uYvQegfSVbY5XM5LhW [GPS정보를 기반으로 주소 리턴받기] 12345678910111213141516171819202122232425262728293031public String getAddress(double lat, double lng) { String address = null; //위치정보를 활용하기 위한 구글 API 객체 Geocoder geocoder = new Geocoder(this, Locale.getDefault()); //주소 목록을 담기 위한 List List list = null; try { //주소 목록을 가져온다. --> 위도, 경도, 조회 갯수 list = ..
데이터베이스에서 목록을 불러와 선택하는 과정에서 체크박스를 이용해야하는 경우가 발생.이 부분에 대한 처리 방법을 많은 시간을 걸쳐 찾아보았지만 초보가 하기엔 쉽지 않은 소스가 많았다. 찾고찾아 헤맨 결과 github에서 아주 심플한 소스를 찾아 해결 https://github.com/clockworkbits/SelectableLists/tree/custom_list_items 이와 관련한 설명 블로그 : http://blog.clockworkbits.com/2014/05/26/list-with-checkable-items/ [추가]위 소스보다 기능적인 면에서 발전된 예제https://github.com/marvinlabs/android-tutorials-custom-selectable-listview
requestWindowFeature(int featureID) FEATURE_CUSTOM_TITLE -커스텀 타이틀 사용 FEATURE_INDETERMINATE_PROGRESS - 액션바에 진행상태 표시 - 원형 FEATURE_LEFT_ICON - 액션바 왼쪽에 아이콘 표시 FEATURE_NO_TITLE - 액션바 제거 FEATURE_OPTIONS_PANEL - 옵션 페널 표시 FEATURE_PROGRESS - 액션바에 진행상태 표시 - 막대형 FEATURE_RIGHT_ICON - 액션바 오른쪽에 아이콘 표시
Manifest 에서 theme부분 설정 [액티비티 배경을 투명하게]android:theme="@android:style/Theme.Translucent" [액티비티의 타이틀바 제거]android:theme="@android:style/Theme.NoTitleBar" [액티비티를 풀스크린으로 띄우기]android:theme="@android:style/Theme.Fullscreen" [전체 적용]android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"
http://destiny738.tistory.com/526
fitsSystemWindows = "true" View가 차지할 수 있는 영역을 상태바 및 소프트키 영역을 제외한 영역까지 확장시켜주는 역할 context = ".MainAcitivity" 개발 시 preview graphic layout을 정확히 표현하기 위해 사용. 실제 앱에서는 상관이 없는 듯(?) duplicateParentState="true" 부모뷰의 속성에 따라 Child뷰의 속성을 함께 변경. 예를들어 ListView에 CheckBox를 넣을 경우 체크박스가 아닌 리스트를 터치 했을 때 체크박스의 상태를 함께 변경 시켜 줌. divider="#00000000" ListView에서 하단 라인 컬러 값 dividerHeight="20dp" ListView에서 하단 라인의 굵기
카메라 미리보기를 위해서는 1. SurfaceView 생성하고 이를 제어하는 SurfaceHolder 객채 참조. 2. 카메라 객체를 만든 후 SurfaceHolder 객체는 setPreviewDisplay()메소드를 이용해 설정 진행. [API] pubilc void setPreviewDisplay (Surface sv) 3. 초기화 작업이 끝나면 startPreview() 메소드 호출 가능. 4. 카메라에 입력된 영상을 서피스뷰를 통해 화면에 노출. 5. 카메라 미리보기를 위해 사용되는 SurfaceView는 SurfaceHolder에 의해 제어 되면서, 카메라 영상을 화면에 뿌려줌. SURFACE_TYPE_PUSH_BUFFERS [참고]SurfaceHolder 유형이 SURFACE_TYPE_PUSH..
MainActivity에서 SubActivity로 페이지 이동 시 SubActivity1234567protected void onCreate(Bundle saveInstanceState) { super.onCreate(savedInstanceState); setContentView(R.id.activity_sub); ActionBar actionBar = getSupportActionBar(); actionBar.setDisplayHomeAsUpEnabled(true);} Colored by Color Scriptercs 액션바에 뒤로가기 버튼을 보여주기 위해 actionBar.setDisplayHomeAsUpEnabled(true); 추가 SubActivity123456789public boolean ..
적용할 페이지 public class MainActivity extends ActionBarActivity { private BackPressCloseHandler backPressCloseHandler; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); backPressCloseHandler = new BackPressCloseHandler(this); } public void onBackPressed(){ backPressCloseHandler.onBackPressed(); } } [BackPressClo..
throws : 예외처리. 정상적으로 동작하는 것이 아님을 알려주는 것으로 정상적으로 나오는 값이 아닌 다른 구멍으로 나오도록 하고 그 구멍을 던져 준다는 의미 public int subtract(int a, int b) throws UnImplementedException; public int divide(int a, int b) throws UnImplementedException{ throw new UnImplementedException("나누기 구현 안함"); //예외상황 처리로 return값이 없어도 됨 }
public void onClick(View v) { String aStr = editText2.getText().toString(); String bStr = editText3.getText().toString(); int a = 0; int b = 0; try { a = Integer.parseInt(aStr); // 문자를 숫자로 변경 Integer.parseInt() b = Integer.parseInt(bStr); } catch (Exception ex) { ex.printStackTrace(); } MyCalculator calculator = new MyCalculator(); int result = calculator.add(a,b); editText3.setText(String.value..