하나의 Activity 에서 다른 Activity로 text값과 이미지를 넘기는 예제.

 

   - Test20_MyAction 받기 전 화면.

 

- Test21_MyActionCall화면에서 Test20_MyAction으로 abcd와 dog이미지를 넘긴 결과 화면.

 

 

프로젝트명 : Test20_MyAction

 

(1) activity_main.xml

<RelativeLayout 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"
    tools:context=".MainActivity" >

    <TextView
        android:id="@+id/txt1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:text="인텐트테스트입니다." />

    <ImageView
        android:id="@+id/img1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:layout_marginTop="114dp"
        android:src="@drawable/ic_launcher" />

</RelativeLayout>

 

(2) AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.test20_myaction"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="16" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.test20_myaction.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>

            <intent-filter >

                <!-- 다른 액티비티가 호출할때 사용하는 action이름 설정 -->
                <action android:name="kr.co.hta.MyAction"/>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>

    </activity>
    </application>

</manifest>

 

 

(3) MainActivity.java

package com.example.test20_myaction;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.view.Menu;
import android.widget.ImageView;
import android.widget.TextView;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //자신을 호출한 인텐트 얻어오기
        Intent intent = getIntent();

        if(intent.getAction().equals("kr.co.hta.MyAction")){
            //호출한 인텐트가 보내온 이미지와 메시지 얻어오기
            Bitmap bitmap = (Bitmap)intent.getExtras().get("img");
            String msg=(String)intent.getExtras().get("msg");

 

            //전달되어온 정보를 뷰에 넣기
            TextView txt=(TextView)findViewById(R.id.txt1);
            txt.setText("다른액티비티가 보내온 메시지:" + msg);
            ImageView img = (ImageView)findViewById(R.id.img1);
            img.setImageBitmap(bitmap);
        }


    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
}

 

 

프로젝트명 : Test21_MyActionCall

 

(1) activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/LinearLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="다른액티비티로 보낼 문자열" />
   
    <EditText
        android:id="@+id/edt1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10" />

    <ImageView
        android:id="@+id/img1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/dog7" />

    <Button
        android:id="@+id/btn1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="다른액티비티로 전송" />

</LinearLayout>

 

(2) MainActivity.java

package com.example.test21_myactioncall;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;

 

public class MainActivity extends Activity {
    EditText edt1;
    ImageView img1;
    Button btn1;
   
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       
        edt1=(EditText)findViewById(R.id.edt1);
        img1=(ImageView)findViewById(R.id.img1);
        btn1=(Button)findViewById(R.id.btn1);

 

        btn1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String str=edt1.getText().toString();
                //R.drawable.dog7이미지를 Bitmap객체로 만들기.
                Bitmap bitmap=BitmapFactory.decodeResource(getResources(), R.drawable.dog7);

 

                //다른 액티비티를 호출하기 위한 인텐트 생성하기.
                Intent intent=new Intent();

 

                //액션이름으로 호출하기(암시적 인텐트)
                intent.setAction("kr.co.hta.MyAction");

 

                //호출되는 액션에 보낼 부가정보 담기
                intent.putExtra("msg",str);
                intent.putExtra("img",bitmap);

 

                //다른 액티비티 호출하기
                startActivity(intent);
            }
        });

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
}

- 메인 화면에서 버튼 누르면 값을 전달.

- 받은 화면에서 값을 수정하고 다시 전달.

 

- 서울시 종로구 로 넘김.                              - 서울시 종로구 25로 수정                              - 수정된 데이터로 돌아온 화면

    

 

(1) activity_main.xml

<RelativeLayout 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"
    tools:context=".MainActivity" >

    <TextView
        android:id="@+id/txt1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:text="서울시 종로구" />

    <Button
        android:id="@+id/btn1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/txt1"
        android:text="주소수정하기" />

</RelativeLayout>

 

 

(2) sub.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="TextView" />

    <EditText
        android:id="@+id/edtAddr"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10" >
        <requestFocus />
    </EditText>
    <Button
        android:id="@+id/subBtnOk"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="수정" />
    <Button
        android:id="@+id/subBtnCancel"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="취소" />

</LinearLayout>

 

 

(3) AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.test19_intent2"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="16" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.test19_intent2.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <!-- 액티비티 등록 -->
        <activity
            android:name="com.example.test19_intent2.SubActivity"
            android:label="넘어온 화면"
            ></activity>

    </application>
</manifest>

 

 

(4) MainActivity.java

package com.example.test19_intent2;

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

public class MainActivity extends Activity {
    Button btn;
    TextView txt1;
    final static int CODE=1;
   
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       
        txt1 = (TextView)findViewById(R.id.txt1);
        btn = (Button)findViewById(R.id.btn1);
        btn.setOnClickListener(new View.OnClickListener() {           
            @Override
            public void onClick(View v) {

                Intent intent = new Intent(MainActivity.this, SubActivity.class);
                //인텐트에 보낼 정보 담기
                intent.putExtra("addr", txt1.getText().toString());
                //호출한 액티비티에서 결과값을 받아오는 경우
                startActivityForResult(intent,CODE);

            }
        });
    }

 

    //서브액티비티가 값을 보내오면 자동호출되는 메소드
    //requestCode에 메인 액티비티에서 보낸 CODE가 담겨온다.
    @Override
    //onActivityResult( 메인액티비티에서 보낸 코드,서브액티비티에서 보내온 리절트코드,서브액티비티에서 데이터를 담아 보낸 인텐트 )
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        switch(requestCode){
        case 1:
            if(resultCode==RESULT_OK){//서브Activity에서 보내온 resultCode와 비교
                //서브액티비티에서 인텐트에 담아온 정보 꺼내기
                String edtAddr=data.getStringExtra("edtAddr");
                //텍스트뷰에 수정된 문자열 넣기
                txt1.setText(edtAddr);
            }else{
               
            }
            break;
        }
    }

 

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
}

 

 

(5) SubActivity.java

package com.example.test19_intent2;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class SubActivity extends Activity{
    Button subBtnOk;
    Button subBtnCancel;
    EditText edtAddr;
   
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.sub);
       
        subBtnOk=(Button)findViewById(R.id.subBtnOk);
        subBtnCancel=(Button)findViewById(R.id.subBtnCancel);
        edtAddr=(EditText)findViewById(R.id.edtAddr);

 

        //메인 액티비티에서 인텐트에 담아온 값 꺼내오기..
        //나를 호출한 인텐트 얻어오기
        Intent intent=getIntent();
        
        //인텐트에 담겨있는 값 꺼내오기
        String addr = intent.getStringExtra("addr");
        
        //에디트텍스트에 문자열 넣기
        edtAddr.setText(addr);
       
        subBtnOk.setOnClickListener(new View.OnClickListener() {           
            @Override
            public void onClick(View v) {
                //입력된 주소 얻어오기
                String data = edtAddr.getText().toString();
                //수정된 주소 정보를 담기위한 인텐트 생성
                Intent intent=new Intent();
                //수정된 정보 담기
                intent.putExtra("edtAddr", data);
                //result code와 (성공의 의미) 수정데이터를 담은 인텐트 설정
                setResult(RESULT_OK, intent);
                //Activity 종료(메인액티비티로 이동)
                finish();
            }
        });
        subBtnCancel.setOnClickListener(new View.OnClickListener() {           
            @Override
            public void onClick(View v) {
                //result코드 담기
                setResult(RESULT_CANCELED);
                //Activity 종료하기(자신을 호출한 액티비티로 가기)
                finish();               
            }
        });
    }
}

 

 

'Mobile > Android' 카테고리의 다른 글

#21 ( Intent Action : 외부 프로그램과 연결 )  (0) 2013.02.02
#20 ( 다른 Activity 로 text와 이미지 넘기기 )  (0) 2013.02.02
#18 (Intent 1: 화면 이동)  (0) 2013.02.02
#17 (menu)  (0) 2013.02.02
#16 ( alert )  (0) 2013.02.02
- layout화면을 두개 만들고 버튼을 누르면 화면 이동.

** AndroidManifest.xml 에 등록해야 함.

 

   →

(1) activity_main.xml

<RelativeLayout 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"
    tools:context=".MainActivity" >

    <Button
        android:id="@+id/btn1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="다른액티비티로 전환" />

</RelativeLayout>

 

(2) sub.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:gravity="center_horizontal"
    >

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/dog1" />

    <Button
        android:id="@+id/subBtn1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="메인액티비티로 이동" />

</LinearLayout>

 

 

(3) AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.test18_intent1"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="16" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.test18_intent1.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <!-- 서버 액티비티 등록하기 -->
        <!-- android:label="subActivity" 타이틀 -->
        <activity
            android:name="com.example.test18_intent1.SubActivity"
            android:label="subActivity"
            >            
        </activity>

</application>

</manifest>

 

 

(4) MainActivity.java

 [[ Activity ]]
 - 하나의 윈도우와 비슷한 개념(하나의 화면)
 - 다른 액티비티로 전환하려면 인텐트(Intent)를 이용해야 한다.
 - 다른 액티비티를 사용할때는 AndroidManifest.xml에 액티비티를 등록해야 한다.

 

package com.example.test18_intent1;

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

 

public class MainActivity extends Activity {
    Button btn;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btn = (Button) findViewById(R.id.btn1);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                // 다른 액티비티로 전환하려면 인텐트를 이용해야 한다.
                // new Intent(자신의 액티비티, Class 호출할 액티비티-클래스타입으로 넘겨야 한다. .class하면
                // Class타입으로 .)
                Intent intent = new Intent(MainActivity.this, SubActivity.class);
                startActivity(intent);

            }
        });
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
}

 

(5) SubActivity.java

package com.example.test18_intent1;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;

public class SubActivity extends Activity{
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        //보여질 뷰설정
        setContentView(R.layout.sub);
        findViewById(R.id.subBtn1).setOnClickListener(new View.OnClickListener() {            
            @Override
            public void onClick(View v) {
                finish();//액티비티 종료--> 메인액티비티로 이동.               
            }
        });
    }
}

 

'Mobile > Android' 카테고리의 다른 글

#20 ( 다른 Activity 로 text와 이미지 넘기기 )  (0) 2013.02.02
#19 ( Intent 2 : 화면 이동 - 넘어온 화면에서 값 을 주고 받음. )  (0) 2013.02.02
#17 (menu)  (0) 2013.02.02
#16 ( alert )  (0) 2013.02.02
#15 ( spinner )  (0) 2013.02.02
- 메뉴 버튼을 누르면 하단에 메뉴가 나오도록 함.

- ListView 를 꾸욱 느르면 메뉴가 띄드록 함. 메뉴중 하나를 선택하여 선택된 색상을 background색상으로 한다.

 

 - 에뮬레이터 우측의 menu버튼을 누르면 하단에 메뉴가 뜬다.

 

 

 - ListView를 누르면 메뉴가 뜬다. 메뉴의 색상을 선택하면 background색상을 변경한다.

(1) activity_main.xml

; 리스트 뷰

<RelativeLayout 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"
    tools:context=".MainActivity" >

    <TextView
        android:id="@+id/txtView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:text="@string/hello_world"
        android:textSize="20sp"
        />

    <ListView
        android:id="@android:id/list"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/txtView" >
    </ListView>

</RelativeLayout>

 

 

(2) MainActivity.java

package com.example.test17_menu;

import android.os.Bundle;
import android.app.ListActivity;
import android.graphics.Color;
import android.view.ContextMenu;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ContextMenu.ContextMenuInfo;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

public class MainActivity extends ListActivity {
    String items[]={"진달래","장미꽃","개나리","백합"};
    ListView listView;
   
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //리스트뷰에 대한 참조값 얻어오기
        listView=getListView();
        //리스트뷰와 연결될 어댑터 만들기
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1,
                items
                );

        setListAdapter(adapter);

 

        //리스트뷰에 컨텍스트메뉴 등록하기
        //리스트뷰를 누르면 컨텍스트 메뉴가 나옴.
        registerForContextMenu(listView);

    }

 

    // 화면상에 메뉴버튼을 누르면 실행되는 부분
    //옵션메뉴 만들기
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        super.onCreateOptionsMenu(menu);
        //meun.add(그룹아이디,메뉴아이디,순서,텍스트)
        MenuItem item = menu.add(0, 1, 0, "자장면");
        item.setIcon(R.drawable.ic_launcher);
        menu.add(0, 2, 0, "짬뽕");
        menu.add(0, 3, 0, "탕수육");
        menu.add(0, 4, 0, "군만두").setIcon(R.drawable.ic_launcher);
       
        return true;
    }

 

    //옵션메뉴를 선택했을때 호출되는 메소드
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // 선택된 메뉴의 아이디 얻어오기
        switch(item.getItemId()){
        case 1: Toast.makeText(this, item.getTitle() + "을 선택했군요", Toast.LENGTH_LONG).show();
            break;
        case 2: Toast.makeText(this, item.getTitle() + "을 선택했군요", Toast.LENGTH_LONG).show();
            break;
        case 3: Toast.makeText(this, item.getTitle() + "을 선택했군요", Toast.LENGTH_LONG).show();
            break;
        case 4: Toast.makeText(this, item.getTitle() + "을 선택했군요", Toast.LENGTH_LONG).show();
            break;
        }
        return true;
    }

 

    // 일정부분을 계속 누를때 나타나는 메뉴
    // 컨텍스트 메뉴 만들기 ( 임의의 지점을 꾸~욱 누르면 나타나는 메뉴 )
    @Override
    public void onCreateContextMenu(ContextMenu menu, View v,
            ContextMenuInfo menuInfo) {
        menu.setHeaderTitle("색상선택");
        menu.add(0,1,0,"빨강");
        menu.add(0,2,0,"파랑");
        menu.add(0,3,0,"노랑");
        menu.add(0,4,0,"초록");
    }

 

    // 리스트 뷰를 누르고 메뉴를 선택하면 해당 색상을 바꾼다.
    @Override
    public boolean onContextItemSelected(MenuItem item) {
        switch(item.getItemId()){//선택된 메뉴에 대한 아이디
             //리스트뷰의 배경색상 바꾸기
            case 1: listView.setBackgroundColor(Color.RED);break;
            case 2: listView.setBackgroundColor(Color.BLUE);break;
            case 3: listView.setBackgroundColor(Color.YELLOW);break;
            case 4: listView.setBackgroundColor(Color.GREEN);break;
        }
        return true;
    }

}

alert 창 띄이기

5가지 alert창

; 1~5번 alert창 만들기.

 

(1)                                                                   (2)

(3)                                                         (4)                                                  (5)  

 

(1) activity_main.xml

; 1~5번 버튼을 만든다.

<RelativeLayout 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"
    tools:context=".MainActivity" >

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:text="1" />

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_toRightOf="@+id/button1"
        android:text="2" />

    <Button
        android:id="@+id/button3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_toRightOf="@+id/button2"
        android:text="3" />

    <Button
        android:id="@+id/button4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_toRightOf="@+id/button3"
        android:text="4" />

    <Button
        android:id="@+id/button5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_toRightOf="@+id/button4"
        android:text="5" />

</RelativeLayout>

 

(2) order.xml

; alert5번 창 layout을 만든다.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:padding="5dp">
            <TextView
                android:layout_width="100dp"
                android:layout_height="wrap_content"
                android:text="제품명" />
            <EditText
                android:id="@+id/edtName"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:ems="10" >
                <requestFocus />
            </EditText>
    </LinearLayout>
  <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:padding="5dp">
            <TextView
                android:layout_width="100dp"
                android:layout_height="wrap_content"
                android:text="수량" />
            <EditText
                android:id="@+id/edtCnt"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:ems="10" >
            </EditText>
    </LinearLayout>
     <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:padding="5dp">
        <CheckBox android:id="@+id/payMethod"
             android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:text="착불결재"/>   
      </LinearLayout>
</LinearLayout>

 

 

(3) MainActivity.java

;

package com.example.test16_alertdlg;

import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.Toast;

public class MainActivity extends Activity {
    Button btn1;
    Button btn2;
    Button btn3;
    Button btn4;
    Button btn5;
   
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       
        btn1=(Button)findViewById(R.id.button1);
        btn2=(Button)findViewById(R.id.button2);
        btn3=(Button)findViewById(R.id.button3);
        btn4=(Button)findViewById(R.id.button4);
        btn5=(Button)findViewById(R.id.button5);

 

        btn1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                /*AlertDialog.Builder dlg =
                        new AlertDialog.Builder(MainActivity.this);
                //제목설정
                dlg.setTitle("나의 대화상자");
                //아이콘
                dlg.setIcon(R.drawable.ic_launcher);
               
                dlg.setMessage("안녕하세요.나의 대화상자에요.!");
                //화면에 보이기
                dlg.show();*/
               
                //위에것을 줄여서 아래와 같이 사용.
                new AlertDialog.Builder(MainActivity.this)
                .setTitle("나의 대화상자")
                .setIcon(R.drawable.ic_launcher)
                .setMessage("안녕하세요.나의 대화상자에요.!")
                .show();
            }
        });

       

        btn2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                new AlertDialog.Builder(MainActivity.this)
                .setTitle("나의 대화상자")
                .setIcon(R.drawable.ic_launcher)
                .setPositiveButton("확인", new DialogInterface.OnClickListener() {                   
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Toast.makeText(MainActivity.this, "확인", Toast.LENGTH_LONG).show();                       
                    }
                })//긍정의 버튼
                .setNeutralButton("중립", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Toast.makeText(MainActivity.this, "중립", Toast.LENGTH_LONG).show();
                    }
                })//부정의 버튼
                .setNegativeButton("닫기", null)//부정의 버튼               
                .show();
            }
        });

 

        btn3.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                new AlertDialog.Builder(MainActivity.this)
                .setIcon(R.drawable.ic_launcher)
                .setTitle("음식메뉴")
                //res에 있는 string배열 얻어와 항목으로 보이기.
                .setItems(R.array.foods, new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {//선택한 인덱스 번호 which
                        //리소스 배열을 string배열로 얻어오기
                        String foods[]=getResources().getStringArray(R.array.foods);
                        //선택한 인덱스가 which에 담겨있음.
                        String selectItem = foods[which];//선택한 메뉴얻어오기.
                        Toast.makeText(MainActivity.this, "선택메뉴:" + selectItem, Toast.LENGTH_LONG).show();
                    }
                })
                .setNegativeButton("닫기", null)
                .show();
            }           
        });

 

        btn4.setOnClickListener(new View.OnClickListener() {
            final boolean checked[]={false,false,false,false};
            @Override
            public void onClick(View v) {
                new AlertDialog.Builder(MainActivity.this)
                .setTitle("메뉴선택")
                .setIcon(R.drawable.ic_launcher)
                .setMultiChoiceItems(R.array.foods,
                        checked,
                        new DialogInterface.OnMultiChoiceClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which, boolean isChecked) {
                                //체크된 상태를 checked배열에 저장.
                                checked[which]=isChecked;
                            }
                }).setPositiveButton("확인",new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        // xml에 있는 문자열을 String배열로 바꾸기
                        String foods[] = getResources().getStringArray(R.array.foods);
                        String selected="";
                        for(int i=0;i<foods.length;i++){
                            //체크된 항목인 경우
                            if(checked[i]){
                                //문자열에 연결
                                selected+=" " + foods[i];
                            }
                        }
                        Toast.makeText(MainActivity.this, "선택메뉴:" + selected, Toast.LENGTH_LONG).show();
                    }
                }).show();
            }
        });

 

        //커스텀 대화상자 띄우기
        btn5.setOnClickListener(new OnClickListener() {
           
            @Override
            public void onClick(View v) {
                //order.xml을 자바객체로 변환하기.
                //LayoutInflater객체 얻어오기           
                final LinearLayout layout = (LinearLayout)View.inflate(MainActivity.this, R.layout.order, null);
               
                new AlertDialog.Builder(MainActivity.this)
                .setTitle("주문정보입력")
                .setIcon(R.drawable.ic_launcher)
                .setView(layout)
                .setPositiveButton("확인", new DialogInterface.OnClickListener() {
                   
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        // 입력된 값 얻어오기
                        EditText edtName = (EditText)layout.findViewById(R.id.edtName);
                        EditText edtCnt = (EditText)layout.findViewById(R.id.edtCnt);
                        CheckBox payMethod = (CheckBox)layout.findViewById(R.id.payMethod);
                       
                        String msg="주문정보:" + edtName.getText().toString() + "\n"
                                + "수량 :" + edtCnt.getText().toString() + "\n"
                                + (payMethod.isChecked()?"착불결제":"");
                        Toast.makeText(MainActivity.this, msg, Toast.LENGTH_LONG).show();
                    }
                })
                .setNegativeButton("취소", null)
                .show();
            }
        });

    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
}

 

 

'Mobile > Android' 카테고리의 다른 글

#18 (Intent 1: 화면 이동)  (0) 2013.02.02
#17 (menu)  (0) 2013.02.02
#15 ( spinner )  (0) 2013.02.02
#14 (ListView : layout파일 붙이고, 이벤트 주기 )  (0) 2013.02.02
#13 (ListView: 만든 layout을 ListView에 붙이기)  (0) 2013.02.02

+ Recent posts