package org.androidtown.a10pmapp;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.FrameLayout;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
//탭화면 객체
TabLayout tabLayout;
//CoordinatorLayout하위의 FrameLayout
FrameLayout container;
//탭 화면 버튼 클릭시 프레임 레이아웃에 인플레이션 될 프레그먼트
TodayScheduleFragment todayScheduleFragment;
AchievementFragment achievementFragment;
//메인화면에서 뒤로가기 두 번을 눌러 종료하기 위한 클래스 인스턴스
BackPressExit backPressExit;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//레이아웃 뷰와 객체 연결
container = (FrameLayout)findViewById(R.id.container);
//프레그먼트 객체 각 동적할당
todayScheduleFragment = new TodayScheduleFragment();
achievementFragment = new AchievementFragment();
//탭 레이아웃 객체에 버튼을 추가(해당 버튼에 인덱스 별도 부여된 뒤 id로 버튼 리스너를 통해 프레그먼트 인플레이션
tabLayout = (TabLayout)findViewById(R.id.tabs);
tabLayout.addTab(tabLayout.newTab().setText("오늘의 할일"));
tabLayout.addTab(tabLayout.newTab().setText("달성도 보기"));
//실행 후에는 오늘일정을 먼저 화면에 인플레이션 시킴
getSupportFragmentManager().beginTransaction().replace(R.id.container,todayScheduleFragment).commit();
//탭화면 구성 메소드 호출
SetTabMenu(tabLayout);
//뒤로가기 버튼 동적 할당
backPressExit = new BackPressExit(this);
}
//뒤로가기 버튼 메소드 Overriding, 뒤로가기 버튼 두 번 종료를 위한 메소드 설정정
@Override
public void onBackPressed() {
backPressExit.onBackPressed();
}
//탭화면 구성 메소드
private void SetTabMenu(TabLayout tabLayout){
tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
int position = tab.getPosition();
Fragment selected=new Fragment();
if(position==0){
selected = todayScheduleFragment;
}else if(position==1){
selected = achievementFragment;
}
getSupportFragmentManager().beginTransaction().replace(R.id.container,selected).commit();
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
}
//임시로 푸시알림을 통해 목표 결과 화면으로 넘어가기 위한 메소드
public void makePushAlarm(){
NotificationManager notificationManager = (NotificationManager)MainActivity.this.
getSystemService(MainActivity.this.NOTIFICATION_SERVICE);
//푸시 알림을 눌렀을 때 전달하게 될 intent : 여기서는 다른 액티비티 화면을 띄우도록 클래스를 전달
Intent intent = new Intent(MainActivity.this,AchievementResultActivity.class);
Notification.Builder builder = new Notification.Builder(getApplicationContext());
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent pendingIntent = PendingIntent.getActivity(MainActivity.this,0,intent,PendingIntent.FLAG_UPDATE_CURRENT);
builder.setSmallIcon(R.drawable.logo).setTicker("10PM").setWhen(System.currentTimeMillis())
.setContentTitle("10PM 목표 확인 알림").setContentText("금일의 설정하신 목표를 확인해주세요!")
.setDefaults(Notification.DEFAULT_SOUND|Notification.DEFAULT_VIBRATE).setContentIntent(pendingIntent)
.setAutoCancel(true).setOngoing(true);
notificationManager.notify(1,builder.build());
}
//Toast메시지를 쉽게 만들기위한 메소드
public void makeToast(String str){
Toast.makeText(getApplicationContext(),str,Toast.LENGTH_LONG).show();
}
}
위 소스코드는 메인액티비티입니다.
그리고 푸시알림을 받은 뒤 누르면 AchievementResultActivity라는 이름의 액티비를 띄우도록
Intent를 생성자 매개변수로 전달했는데요
알람을 눌러도 해당 액티비티가 뜨질 않습니다.
무엇이 문제일까요?