액티비티 이동

Android 2013. 1. 14. 14:19
반응형

간단하게 액티비티를 이동시키고 데이터를 주고 받아보자.


모든 소스는 잘 돌아가는 걸 P&D했으니 긁어다 실행하다보면 어디가 중요한지 알 수 있을 것이다.



소스 외에 중요 부분만 알고 싶다면 제일 아래로 드래그


1. 보내고 받는 액티비티의 레이아웃


1) send_activity.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"

    android:layout_height="match_parent" 

    android:orientation="vertical">

    <LinearLayout 

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:orientation="horizontal">

        

     <TextView

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="@string/name"

        tools:context=".BasicFormActivity" />

     <EditText

         android:id="@+id/edit_name"

         android:layout_width="fill_parent"

         android:layout_height="wrap_content"/>

</LinearLayout>

<LinearLayout 

    android:layout_width="fill_parent"

    android:layout_height="wrap_content"

    android:orientation = "horizontal">

    <TextView

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="@string/sex"/>

    <RadioGroup

        android:id="@+id/radiogroup_sex"

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:orientation="horizontal">

    <RadioButton 

        android:id="@+id/radio_male"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="남"/>

    <RadioButton 

        android:id="@+id/radio_female"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="여"/>         

  </RadioGroup>

</LinearLayout>

<LinearLayout 

    android:layout_width="fill_parent"

    android:layout_height="wrap_content"

    android:orientation = "horizontal">

    

    <TextView

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="@string/sms"/>

    <CheckBox 

        android:id="@+id/checkbox_sms"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="SMS"/>

</LinearLayout>

<LinearLayout

        android:orientation="horizontal"

        android:gravity="right"

        android:layout_width="fill_parent"

        android:layout_height="wrap_content">

    

     <TextView

         android:layout_width="60sp"

         android:layout_height="wrap_content"

         android:text="@string/interest"/>

     <Spinner 

         android:id="@+id/spinner_interest"

         android:layout_width="fill_parent"

         android:layout_height="wrap_content"/>

</LinearLayout>

<LinearLayout 

android:layout_width="fill_parent"

android:layout_height="wrap_content" 

android:orientation="horizontal">

    <TextView

        android:layout_width="60sp"

        android:layout_height="wrap_content"

        android:text="@string/birthday"/>

    <EditText 

        android:id="@+id/edit_birthday"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"/>

</LinearLayout>

<LinearLayout

    android:layout_width="fill_parent"

    android:layout_height="wrap_content"

    android:gravity="right"

    android:orientation="horizontal" >


    <Button

        android:id="@+id/button_send"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="전송" />

</LinearLayout>


</LinearLayout>












2) recv_activity.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    android:orientation="vertical" >


    <LinearLayout

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:orientation="horizontal" >


        <TextView

            android:layout_width="fill_parent"

            android:layout_height="wrap_content"

            android:text="@string/title_receive" />

    </LinearLayout>


    <LinearLayout

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:orientation="horizontal" >


        <TextView

            android:layout_width="60sp"

            android:layout_height="wrap_content"

            android:text="@string/name" />


        <TextView

            android:layout_width="fill_parent"

            android:layout_height="wrap_content"

            android:id="@+id/tv_name" />

    </LinearLayout>


    <LinearLayout

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:orientation="horizontal" >


        <TextView

            android:layout_width="60sp"

            android:layout_height="wrap_content"

            android:text="@string/sex" />


        <TextView

            android:layout_width="fill_parent"

            android:layout_height="wrap_content"

            android:id="@+id/tv_sex" />

    </LinearLayout>


    <LinearLayout

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:orientation="horizontal" >


        <TextView

            android:layout_width="60sp"

            android:layout_height="wrap_content"

            android:text="@string/sms" />


        <TextView

            android:layout_width="fill_parent"

            android:layout_height="wrap_content"

            android:id="@+id/tv_sms" />

    </LinearLayout>


    <LinearLayout

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:orientation="horizontal" >


        <TextView

            android:layout_width="60sp"

            android:layout_height="wrap_content"

            android:text="@string/interest" />


        <TextView

            android:layout_width="fill_parent"

            android:layout_height="wrap_content"

            android:id="@+id/tv_interest" />

    </LinearLayout>


    <LinearLayout

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:orientation="horizontal" >


        <TextView

            android:layout_width="60sp"

            android:layout_height="wrap_content"

            android:text="@string/birthday" />


        <TextView

            android:layout_width="fill_parent"

            android:layout_height="wrap_content"

            android:id="@+id/tv_birthday" />

    </LinearLayout>

    

    <LinearLayout

    android:layout_width="fill_parent"

    android:layout_height="wrap_content"

    android:gravity="right"

    android:orientation="horizontal" >


    <Button

        android:id="@+id/button_prev"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="이전" />

</LinearLayout>

    


</LinearLayout>
















2. 그에 관한 소스


1) SendActivity.java

package com.activitytrans;

import java.util.Calendar;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Spinner;
import android.widget.TextView;

public class SendActivity extends Activity implements OnClickListener {

	private TextView mDateDisplay;
	private int mYear;
	private int mMonth;
	private int mDay;
	static final int DATE_DIALOG_ID = 0;
	Spinner spinner;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_send);

		ArrayAdapter adapter = ArrayAdapter.createFromResource(
				this, R.array.interest_array,
				android.R.layout.simple_spinner_item);
		adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

		spinner = (Spinner) findViewById(R.id.spinner_interest);

		spinner.setAdapter(adapter);

		mDateDisplay = (TextView) findViewById(R.id.edit_birthday);
		mDateDisplay.setOnClickListener(new View.OnClickListener() {
			public void onClick(View v) {
				showDialog(DATE_DIALOG_ID);
			}
		});

		final Calendar c = Calendar.getInstance();
		mYear = c.get(Calendar.YEAR);
		mMonth = c.get(Calendar.MONTH);
		mDay = c.get(Calendar.DAY_OF_MONTH);
		updateDisplay();

		Button btn = (Button) findViewById(R.id.button_send);
		btn.setOnClickListener(this);
	}

	protected Dialog onCreateDialog(int id) {
		switch (id) {
		case DATE_DIALOG_ID:
			return new DatePickerDialog(this, mDateSetListener, mYear, mMonth,
					mDay);
		}
		return null;
	}

	private DatePickerDialog.OnDateSetListener mDateSetListener = new DatePickerDialog.OnDateSetListener() {
		public void onDateSet(DatePicker view, int year, int monthOfYear,
				int dayOfMonth) {
			mYear = year;
			mMonth = monthOfYear;
			mDay = dayOfMonth;
			updateDisplay();
		}
	};

	private void updateDisplay() {
		mDateDisplay.setText(new StringBuilder().append(mYear).append("-")
				.append(mMonth + 1).append("-").append(mDay).append(""));
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		getMenuInflater().inflate(R.menu.activity_send, menu);
		return true;
	}

	public void onClick(View v) {
		EditText et_name = (EditText) findViewById(R.id.edit_name);
		String str_name = et_name.getText().toString();

		RadioGroup rg_sex = (RadioGroup) findViewById(R.id.radiogroup_sex);
		RadioButton rb_male = (RadioButton) findViewById(R.id.radio_male);
		RadioButton rb_female = (RadioButton) findViewById(R.id.radio_female);
		String str_sex = "";
		if (rg_sex.getCheckedRadioButtonId() == R.id.radio_male) {
			str_sex = rb_male.getText().toString();
		}
		if (rg_sex.getCheckedRadioButtonId() == R.id.radio_female) {
			str_sex = rb_female.getText().toString();
		}

		CheckBox chk_sms = (CheckBox) findViewById(R.id.checkbox_sms);
		String str_sms = "";
		if (chk_sms.isChecked()) {
			str_sms = (String) chk_sms.getText();
		}

		String str_interest = spinner.getSelectedItem().toString();

		EditText et_birthday = (EditText) findViewById(R.id.edit_birthday);
		String str_birthday = et_birthday.getText().toString();

		//
		// 중요 부분!
		//
		Intent it = new Intent(this, ReceiveActivity.class);

		it.putExtra("it_name", str_name);
		it.putExtra("it_sex", str_sex);
		it.putExtra("it_sms", str_sms);
		it.putExtra("it_interest", str_interest);
		it.putExtra("it_birthday", str_birthday);

		startActivity(it);

		finish();
		//
		// 중요 부분!
		//

		/*
		 * AlertDialog.Builder alert = new AlertDialog.Builder(this);
		 * alert.setTitle("알림창");
		 * alert.setMessage("성명: "+str_name+"\n성별: "+str_sex
		 * +"\n수신여부 : "+str_sms+
		 * "\n관심분야 : "+spn_interest+"\n생일 : "+str_birthday);
		 * alert.setIcon(R.drawable.ic_launcher); alert.setPositiveButton("확인",
		 * null); alert.show();
		 */
	}
}




2) RecvActivity.java

package com.activitytrans;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class ReceiveActivity extends Activity implements OnClickListener {

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

		setContentView(R.layout.activity_receive);

		Intent it = getIntent();

		String str_name = it.getStringExtra("it_name");
		String str_sex = it.getStringExtra("it_sex");
		String str_sms = it.getStringExtra("it_sms");
		String str_interest = it.getStringExtra("it_interest");
		String str_birthday = it.getStringExtra("it_birthday");

		TextView tv_name = (TextView) findViewById(R.id.tv_name);
		tv_name.setText(str_name);
		
		TextView tv_sex = (TextView) findViewById(R.id.tv_sex);
		tv_sex.setText(str_sex);
		
		TextView tv_sms = (TextView) findViewById(R.id.tv_sms);
		tv_sms.setText(str_sms);
		
		TextView tv_interest = (TextView) findViewById(R.id.tv_interest);
		tv_interest.setText(str_interest);
		
		TextView tv_birthday = (TextView) findViewById(R.id.tv_birthday);
		tv_birthday.setText(str_birthday);

		Button btn = (Button) findViewById(R.id.button_prev);
		btn.setOnClickListener(this);
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		getMenuInflater().inflate(R.menu.activity_receive, menu);
		return true;
	}

	//
	// 중요 부분!
	//
	public void onClick(View v) {
		Intent it = new Intent(this, SendActivity.class);
		startActivity(it);
		finish();
	}
	//
	// 중요 부분!
	//
}


3. 주요 부분과 설명





	//
	// 중요 부분!
	//
	public void onClick(View v) {
		Intent it = new Intent(this, SendActivity.class);
		startActivity(it);
		finish();
	}
	//
	// 중요 부분!
	//


 이 부분을 보면 Intent 라는 것이 있는데 이 친구로 액티비티를 왔다 갔다 할 수 있는 것이다.

 생성자 내용은 (패키지장소, 자바 클래스 파일)을 적어주면 되고, 


시작은 startActivity()를 통해서, 그리고 액티비티의 소멸은 finish()를 통해서 하게 된다.

보통 다른 액티비티로 넘어간 뒤에는 자기자신을 죽이게 된다.


인자값을 넘기려면, .putExtra("변수명", 값); 을 해주면 된다.


예로 들자면, SendActivity에 값을 전달하고 싶으면

it.putExtra("it_name", "데르벨준"); 이라고 적어주면 된다.


전달된 값을 실행시킨 액티비티에서 받아오는 방법은 

it.getStringExtra("it_name"); 이라 해주면 된다. 


그리고 전달되는 값은 String으로 넘기고 받게 된다.

반응형

WRITTEN BY
데르벨준

,