Android
-
Fragment(2)Android 2012. 11. 12. 14:13
당연히 Activity와는 다른 생명주기를 갖기때문에 fragment를 사용하는 개념은 액티비티와는 완전히 다르다. 모든 것은 FragmentManager를 통해 독립적으로 관리된다. 액티비티는 UI중심 즉 각각의 layout파일 중심으로 작동하면 된다고 생각하면되나 fragment는 fragmentManager중심이라고 생각하는 것이 맞다.한 가지 예를 들어보자면 fragment는 혼자서 보일수는 없다 반드시 액티비티에 포함되어야한다. 하지만 그렇다고 해도 액티비티가 다시 생성되어서 모든 정보가 초기화되어도 fragmentManager에 기록된 정보는 그대로 살아 있다. 액티비티가 onCreate부터 다시 불리더라도 이전에 만들어서 fragmentManager에 add해둔 fragment는 아직 살아있..
-
fragment에서 attach, detach method!Android 2012. 11. 12. 11:24
fragmentManager에 추가된 fragment를 어떻게 떼어내어 다시 fragment로 만들수 있을까? 혹은 이미 있는 fragment를 어떻게 다시 붙일수 있을까? 이때 attach와 detach메소드가 있다. 먼저 reference를 보자 public abstract FragmentTransaction attach (Fragment fragment)Re-attach a fragment after it had previously been deatched from the UI with detach(Fragment). This causes its view hierarchy to be re-created, attached to the UI, and displayed.ParametersfragmentT..
-
Fragment 에서 방향 전환시 null 체크Android 2012. 11. 9. 18:55
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); Log.e("온크리에이트", "입니다."); if(getSupportFragmentManager().findFragmentByTag("listfra") == null){ FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); ListViewFragment lvf = new ListViewFragment(); ..
-
Fragment를 이용한 TabActivityAndroid 2012. 11. 9. 17:57
MainActivity.java package com.example.hellotabfragment; import java.util.HashMap; import android.content.Context; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentTransaction; import android.util.Log; import android.view.View; import android.widget.TabHost; import com.example.hellotabfragment.f..
-
Fragment(1)Android 2012. 11. 9. 15:42
개인적인 생각으로 Fragment는 객체화시킬수 있는 서브 액티비티라는 생각이다. 액티비티자체는 객체화 시킬수 없어 사용에 불편함이 있다. 그러나 프래그먼트는 객체화가 가능하여 유연성있게 사용할 수 있다. 그리고 단독으로는 사용할 수 없다. 액티비티안에 사용할 수 있다. 액티비티 끼리는 인텐트를 주고받지만 프래그먼트는 argument로 값을 주고 받는다. 그런데 프래그먼트를 생성할때마다 Bundle을 만들어 아규먼트를 전달 받고 전달하는 것은 낭비라는 생각이 들어 메소드를 만든다. static TextFragment newInstance(String _msg){ TextFragment tf = new TextFragment(); Bundle bundle = new Bundle(); bundle.putSt..
-
생명주기 메소드를 Override할때 super의 위치Android 2012. 11. 8. 10:26
전부터 궁금했던것 Override를 하였을때 부모의 원메소드를 호출할때 super를 사용한다.그런데 super를 먼저 사용하기도 하고 나중에 사용하기도 한다. 안드로이드 경우 보통 생명주기에 관한 메소드를 오버라이드 할때 자주 사용하는데 이때에 한해 언제 사용하는게 좋은지 궁금했다. 안드로이드쪽으로 유명한 블로거 커니님이 관련된 내용의 포스트를 하셔서 자세한 내용을 물어보았다.http://androidhuman.tistory.com/entry/안드로이드를-위한-자바-오버로딩Overloading-오버라이딩Overriding의-이해Kaylab오버라이드인 경우 꼭 super.onCreate(); 라인 밑에다가 자신이 해야할 일들을 작성해야 하는 이유가 있나요? 작성된 소스들을 보거나 실제로 해봐도 그전이나 그..
-
IntentServiceAndroid 2012. 11. 6. 18:43
IntentService 이것은 모든 start요청을 한번에 하나씩 처리하기 위해 worker thread를 사용하는 서비스의 서브클래스이다. 이것은 서비스가 다중 요청들을 동시에 처리해야하는 경우가 아니라면 최적의 선택사항이다. 할 일은 onHandlerIntent()를 구현하는 것이다. 이 메소드는 백그라운드 작업을 할 수 있도록 각각의 시작요청을 위한 인텐트를 수신한다. 다음 섹션은 이러한 클래스들 중 하나를 사용해서 서비스를 구현하는 방법을 설명한다. Extending the IntentServie class 대부분의 시작된 서비스들은 동시에 다중 요청(사실상 위험한 다중스레딩 시나리오가 될 수 있다.)을 처리할 필요가 없기 때문에 IntentService 클래스를 사용하여 서비스를 구현하는 것이..
-
weight값설정시 최적화Android 2012. 11. 6. 16:27
이렇게 LinearLayout으로 감싼 뷰중 하나를 남은 공간에 꽉차게 할때보통 뷰의 속성에 weight 값을 설정해서 하곤한다. 이때 아래와 같이 설정해줬다면 width는 0으로 설정해주는 것이 좋다. (LinearLayout의 orientation이 vertical인경우에는 height를 0으로 설정) 그 이유는 weight값은 남은 공간을 채우기 위한 다른 width계산이 필요한데 “wrap_content”을 사용하는것은 시스템은 결국 상관없는 width를 계산하게 되기 때문이다.