2020년 7월 18일 토요일

자마린, Xamarin, Hello Android MultiScreen Example

자마린, Xamarin, Hello Android MultiScreen Example

http://ojc.asia/bbs/board.php?bo_table=LecXamarin&wr_id=120

2.3.2 Hello Android MultiScreen Example

n 이전 Android_Hello 프로젝트에 전화건 내역을 저장하는 화면과 로직을 추가해 보자.

n 비주얼 스튜디오에서 이전에 작성한 Android_Hello 응용프로그램을 오픈하자.

n Resource/Layout아래의 activity_main을 오픈 후 도구상자(ToolBox)에서 Button을 드래그하여 Call Button 아래에 위치시킨 후 속성창에서 Id속성을@+id/CallHistoryButton”, Text 속성을@string/callHistory”로 설정한다.

n Resources/value 아래의 strings.xml파일을 오픈 후 Resources 안쪽에 아래코드를 삽입하자.

<string name="callHistory">CallHistory</string>

n activity_main 화면에서 CallHistoryButton 선택후 enabled 속성을 false로(체크를 푼다.) 설정하면 디자인 화면에서 버튼이 비활성화 된다.

n 전화건 내역을 저장하는 두번째 화면을 위한 Activity를 생성하는데 프로젝트에 추가 -> 새항목에서 Visual C# -> Activity(동작)를 선택, 이름을 CallHistoryActivity.cs로 하고 아래 내용으로 코드를 채우자. (ListActivity를 상속받았음에 주의하자!, 별도의 UI이 *.axml 파일이 필요없다.)

n Android의 ListView를 사용하면 열거 가능한 컬렉션을 반복하고 각 데이터를 목록 항목에 표시 할 수 있다. 목록보기는 어댑터와 함께 작동하여 데이터를 반복하고 레이아웃에 데이터를 표시하는 구조디.

n 단순한 데이터를 화면에 표시하고자하는 경우 Android.Resource.Layout.SimpleListItem1과 같은 built-in list item layouts을 사용하면 된다.

n MainActivity.cs 파일을 오픈해서 전화를 걸 때 전화번호를 저장하기 위한 List<string>를 위한 “System.Collections.Generic”을 import하고 phoneNumbers 라는 컬렉션 변수를 정의하자.

n MainActivity의 OnCreate 메소드앞 SetContentView 뒤부분에 CallHistoryButton의 이벤트 핸들러를 작성하자. 혹시 Resource.Id.CallHistoryButton을 못찾으면 솔루션 탐색기에서 F5를 누른 후 다시해보자.

n 사용자가 “Make a Call을 클릭하고 “Call”을 클릭할 때 사용자 전화번호를 저장해 두기 위해 위에서 만든 켈렉션 변수 phoneNumbers에 저장하고 CallHistoryButton을 활성화하는 기능 추가를 위해 callDialog.SetNeutralButton를 수정하자.

[아래는 MainActivity.cs의 전체코드이다.]

using System;

using Android.App;

using Android.Content;

using Android.Widget;

using Android.OS;

using Android.Text;

using System.Collections.Generic;

namespace Android_Hello

{

[Activity(Label = "Xamarin Android",

MainLauncher = true, Icon = "@drawable/icon")]

public class MainActivity : Activity

{

static readonly List<string> phoneNymbers = new List<string>();

protected override void OnCreate(Bundle bundle)

{

base.OnCreate(bundle);

// Set our view from the "main" layout resource

SetContentView (Resource.Layout.Main);

Button callHistoryButton = FindViewById<Button>(Resource.Id.CallHistoryButton);

callHistoryButton.Click += (sender, e) =>

{

// 인텐트는 액티비티의 전환이 일어날 때 호출하거나 메시지를 전달하는 매개체

// 암시적 인텐트 : 전환될 곳을 직접 지정하지 않고 액션을 적어서 사용한다.

// 명시적 인텐트 : 전환될 액티비티를 직접 적어서 표현하는 방법을 사용한다.

var intent = new Intent(this, typeof(CallHistoryActivity));

// PutStringArrayExtra는 Intent에 전화 번호 목록을 첨부한다.

intent.PutStringArrayListExtra("phone_numbers", phoneNymbers);

StartActivity(intent);

};

EditText phoneNumberText =

FindViewById<EditText>(Resource.Id.PhoneNumberText);

//전화걸기 버튼

Button callButton = FindViewById<Button>(Resource.Id.CallButton);

callButton.Enabled = false;

phoneNumberText.TextChanged +=

(object sender, TextChangedEventArgs e) =>

{

if (!string.IsNullOrWhiteSpace(phoneNumberText.Text))

callButton.Enabled = true;

else

callButton.Enabled = false;

};

callButton.Click += (object sender, EventArgs e) =>

{

//Make a Call 버튼 클릭시 전화를 건다.

var callDialog = new AlertDialog.Builder(this);

callDialog.SetMessage("Call " + phoneNumberText.Text + "?");

//"Call"을 클릭하는 경우

// 전화걸기 위한 인텐트 생성

callDialog.SetNeutralButton("Call", delegate

{

phoneNymbers.Add(phoneNumberText.Text);

callHistoryButton.Enabled = true;

// 인텐트는 액티비티의 전환이 일어날 때 호출하거나 메시지를 전달하는 매개체

// 암시적 인텐트 : 전환될 곳을 직접 지정하지 않고 액션을 적어서 사용한다.

// 명시적 인텐트 : 전환될 액티비티를 직접 적어서 표현하는 방법을 사용한다.

var callIntent = new Intent(Intent.ActionCall);

callIntent.SetData(Android.Net.Uri.Parse("tel:" + phoneNumberText.Text));

StartActivity(callIntent);

});

//Cancel을 클릭하는 경우

callDialog.SetNegativeButton("Cancel", delegate { });

callDialog.Show();

};

}

}

}

댓글 없음:

댓글 쓰기

(C#교육동영상)C# ADO.NET 실습 ODP.NET/ODAC 설치 오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원

  (C#교육동영상)C# ADO.NET 실습  ODP.NET/ODAC 설치  오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원 https://www.youtube.com/watch?v=qIPU85yAlzc&list=PLxU-i...