2017년 3월 24일 금요일

Xamarin, Android : 하위 페이지에서 상위 페이지 이동하는 액션 툴바 설정

하위 화면에서 상위 화면으로 돌아가는 아이콘 설정을 해보자.


이런거...

Xamarin, Android : 화면이동 & 이동시 애니메이션 적용 을 기준으로 설명.

일단 서브 페이지도 액션 툴바를 설정한다.
설정하는 방법은 "Action ToolBar 등록 및 메뉴 설정" 을 참고.

메인 화면에 액션툴바를 설정한 것과 동일하게 하면된다.


일단 서브 레이아웃에도 툴바를 등록해 놓고.


SubActivity 에도 툴바를 불러 온다.
메인과 다른 점이라고는 아이콘을 별도로 등록하지 않는다는 것뿐.

이렇게 하면 아이콘까지는 출력되니, 이제는 그 아이콘을 클릭하면 메인 액티비티로 이동 하는 액션을 넣는다.


OnOptionSelected() 를 오버라이드 하면 되며, 거기서 선택한 메뉴의 아이디가 "Android.Resource.Id.Home" 일 경우 실행할 항목을 작성하면 된다.

using Android.App;
using Android.Views;
using Android.OS;
using Android.Support.V7.App;
using SupportActionBar = Android.Support.V7.App.ActionBar;

namespace son10001app
{
    [Activity(Label = "SubActivity", Theme = "@style/MyTheme")]
    public class SubActivity : AppCompatActivity
    {
        private Android.Support.V7.Widget.Toolbar mToolbar;

        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            SetContentView(Resource.Layout.Sub);

            mToolbar = FindViewById<Android.Support.V7.Widget.Toolbar>(Resource.Id.toolbar);
            SetSupportActionBar(mToolbar);
            SupportActionBar.Title = "서브 페이지";
            SupportActionBar.SetDisplayHomeAsUpEnabled(true);
        }

        public override bool OnCreateOptionsMenu(IMenu menu)
        {
            MenuInflater.Inflate(Resource.Menu.action_menu, menu);
            return base.OnCreateOptionsMenu(menu);
        }

        public override bool OnOptionsItemSelected(IMenuItem item)
        {
            switch (item.ItemId)
            {
                case Android.Resource.Id.Home:      // action menu 의 home(<-) 클릭
                    OnBackPressed();
                    return true;
            }

            return base.OnOptionsItemSelected(item);
        }

        // 뒤로가기 버튼 클릭
        public override void OnBackPressed()
        {
            Finish();
            OverridePendingTransition(Resource.Animation.anim_slide_in_left, Resource.Animation.anim_slide_out_right);
        }
    }
}

이렇게 작성해 놓고 앱을 실행해 보면...


두개의 페이지가 각각 아이콘을 클릭함으로 페이지 전환이 된다.