안드로이드2018. 7. 24. 14:28

- 프래그먼트의 추가 또는 변경이 필요하면 그 때마다 beginTransaction() 메소드를 호출해야 한다.

private FragmentManager fm = getSupportFragmentManager();

위와 같이 FragmentManager 객체를 호출하고,

@Override
protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setcontentView(R.layout.activity_main);
  
  FragmentTransaction ft = fm.beginTransaction();
  ft.add(R.id.fragment_01, new Fragment01());
  ft.commit();
}

private void setFragment(int fragmentName) {
  // ...
  ft.replace(R.id.fragment_02, new Fragment02());
  ft.commit();
  // ...
}

- 위와 같이 하나의 트랜잭션에서 또 프래그먼트 전환 처리를 하면 다음과 같은 에러가 난다.

commit already called

그러므로 다른 프래그먼트를 호출해야 한다면 다음과 같이 트랜잭션 객체를 새롭게 생성해야 한다.

private void setFragment(int fragmentName) {
  // ...
  FragmentTransaction ft = fm.beginTransaction();
  ft.replace(R.id.fragment_02, new Fragment02());
  ft.commit();
  // ...
}


- 즉, 프래그먼트의 commit() 메소드는 호출이 필요할 때 마다 FragmentTransaction을 생성하면 된다.


이상 끗~!

Posted by 홍규홍규
안드로이드2018. 7. 11. 16:41
PackageManager pm = getPackageManager();
// PackageManager pm = getActivity().getPackageManager(); // 비 액티비티에서 구현할 경우

String packageName = "실행하려는 앱의 패키지명";
try {
  pm.getApplicationInfo(packageName, PackageManager.GET_META_DATA);
  startActivity(pm.getLaunchIntentForPackage(packageName));

} catch(PackageManager.NameNotFoundException e) {
  // 해당 패키지 앱이 설치되어있지 않을 경우 NameNotFoundException 예외가 발생하면서 구글 플레이로 이동.
  startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + packageName)));
}
이렇게 간단하게 구현할 수 있다. 
까먹지 말자 좀. 

이상 끗~!


Posted by 홍규홍규
JavaScript2018. 7. 8. 22:35

Json Array 형식으로 된 데이터(data)를 파싱해보자.

별 것도 없다.

var jsonData = JSON.parse(data);
console.log(jsonData);

이렇게 간단하다.


이상 끗~!

Posted by 홍규홍규