Notification 아이콘 클릭시 특정 프래그먼트로 이동
Notification 아이콘 클릭시
특정 프래그먼트로 이동
ㆍ 요즘은 대부분 Fragment로 화면을 구성하는 경우가
많습니다
ㆍ Notification에서 아이콘 클릭시 Intent로 Activity를
열게 되는데, Fragment는 Activity안에 속해있는 경우라서
한번 더 처리가 필요하다
Notification 코드
전체는.. 나중에
날 잡아서 보도록 하고
Intent 날리는 부분만
먼저 보도록 하겠습니다
다들 Notification 예제코드를
보셨으면 아시겠지만
일반 Intent와 PendingIent
두가지를 적어줘야 합니다.
만약 MainActivity 하나에
Fragment 여러개로 구성된
앱이라면
Intent notiIconClickIntent = new Intent(MainActivity.this, MainActivity.class);
이런식으로 Intent를 생성하겠죠
그 다음은 인텐트에서
Activity간 데이터전달을
하기 위해서
putExtra를 써줘야합니다.
오래전까진 아니지만 예전에 짧게
글 올렸던 기억이 있네요
http://Activity간 데이터전달 (putExtra, getExtras, getIntent)
이걸 이용해서 특정 Fragment로
이동시켜주시면 됩니다.
Intent notiIconClickIntent = new Intent(MainActivity.this, MainActivity.class);
notiIconClickIntent .putExtra("particularFragment", "notiIntent");
notiIconClickIntent .setAction(Intent.ACTION_MAIN);
notiIconClickIntent .addCategory(Intent.CATEGORY_LAUNCHER);
TaskStackBuilder stackBuilder = TaskStackBuilder.create(MainActivity.this);
stackBuilder.addParentStack(MainActivity.class);
stackBuilder.addNextIntent(notiIconClickIntent);
PendingIntent pendingIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
nt.setContentIntent(pendingIntent);
Intent 날리는코드도
엄청 다양하고 많더라구요..
위에 코드는
상태바(Status bar)에서
아이콘 선택시
기존에 Activity가 있던말던
Activity를 하나로 만들어서
실행시키는 코드입니다
이게 문제가 아니라
notiIconClickIntent.putExtra("particularFragment", "notiIntent")
이 부분을 보시면 되겠죠
이렇게 설정한 후에
MainActivity 코드에서
onCreate할때 위에 값을
받아주시면 됩니다
String str = getIntent().getStringExtra("particularFragment");
if(str !=null)
{
if(str.equals("notiIntent"))
{
// 해당 Fragment 실행
}
}
코드가 짧고 생각보다
어렵지 않습니다.
평소처럼 앱을 실행시켜서
onCreate에 들어갈경우
String(str)의 값은 null 값이겟죠
그러니 if문에 안들어가게 되는데
Notification 아이콘을 터치해서
onCreate에 들어오는 경우
String(str) 값이 putExtra에서
넣어준 값으로 변경되겠죠
그러므로 if문안에 들어가게되고
그 후에 당연히
String 비교는 equals를 해서
해당 Fragment를
replace든 add든 해서
열어주시면 됩니다
'안드로이드(android) > 알아두면 좋은것' 카테고리의 다른 글
TextView(Button) TextColor Selector 코드로 변경하기 (0) | 2016.10.07 |
---|---|
앱 종료시 AsyncTask 종료시키기 (0) | 2016.08.15 |
안드로이드 스튜디오 JavaCV 관련 (0) | 2016.07.19 |
NDK : javah 문제(.h 안만들어질때 Could not find~) (0) | 2016.07.14 |
[안드로이드]코드 입력시 자동으로 import되도록 설정 (0) | 2016.06.27 |