마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

푸시 알람을 눌렀을 때 다른 액티비티로 넘어가지 않습니다.

0 추천
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를 생성자 매개변수로 전달했는데요

알람을 눌러도 해당 액티비티가 뜨질 않습니다.

무엇이 문제일까요?

익명사용자 님이 2017년 4월 5일 질문

1개의 답변

0 추천
makePushAlarm() 함수를 호출하는 부분이 없네요.
뼈발자 님이 2017년 4월 5일 답변
...