본문 바로가기
매일코딩/안드로이드

[안드로이드 기초] 화면구성과 화면 전환(데이터 넘기기) & 인텐트 개념

by 인생여희 2017. 8. 14.
반응형

화면구성과 화면 전환(데이터 넘기기) & 인텐트 개념


#이장의 핵심 코드


1.메인화면에서 메뉴화면 띄울때

//시스템에서 activity를 관리한다
//시스템에 엑티비티를 띄워 달라 요청할때
// (알아들을 수 있는 포멧이 intent)
Intent intent = new Intent(getApplicationContext(),MenuActivity.class);

//시스템 쪽으로 intent 전달 -> 메뉴페이지를 열어달라, + 식별코드
startActivityForResult(intent, 101);


2.메뉴화면에서 메인화면으로 데이터 전달 할때

//스텍에서 화면관리를 한다.
//메인화면 위에 메뉴 화면이 떠 있는 상황
// 메뉴화면에서 메인화면으로 데이터를 전달할 때
// 시스템을 통과하기 때문에 intent 객체 사용

Intent intent = new Intent();
intent.putExtra("key","l need you Lord");
setResult(Activity.RESULT_OK,intent);


3.메인화면에서 메뉴화면이 보낸 데이터를 받을 때

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);

if(requestCode == 101 ){
String key = data.getStringExtra("key");
Toast.makeText(getApplicationContext(),"메뉴에서 응답받은 데이터:"+key,Toast.LENGTH_SHORT).show();
}
}



#안드로이드 구성요소

1.엑티비티 - > 하나의 화면

2.서비스 -> 계속 뒤에서 동작

3.브로드캐스트 수신자

4.내용제공자


#엑티비티 구성 과정



#시스템 역할



#화면간 전환




#메인화면



#소스


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package me.happygate.myapplication007;
 
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
 
public class MainActivity extends AppCompatActivity {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        //버튼 객체
        Button button =(Button)findViewById(R.id.button);
        //버튼 클릭
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
 
                //시스템에서 activity관리
                //시스템에 요청 (알아들을 수 있는 포멧이 intent)
                Intent intent = new Intent(getApplicationContext(),MenuActivity.class);
 
                //시스템 쪽으로 intent 전달
                startActivityForResult(intent,101);
            }
        });
 
 
    }
 
    //메뉴화면에서 보낸 데이터를 인텐트로 받는다.
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
 
        if(requestCode == 101){
 
            String name = data.getStringExtra("name");
            Toast.makeText(getApplicationContext(), "response from menu page:"+ name, Toast.LENGTH_SHORT ).show();
        }
 
    }
}
 
cs



#메뉴화면

#소스


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package me.happygate.myapplication007;
 
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
 
public class MenuActivity extends AppCompatActivity {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_menu);
 
 
        Button button2=(Button)findViewById(R.id.button2);
        button2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //스텍에서 화면관리. 메인 화면 위에 메뉴 화면이 있는 상황
 
                //메뉴화며에서 메인화면으로 데이터 전달
                //시스템을 통과하기 때문에 intent 객체 사용
 
                Intent intent = new Intent();

                intent.putExtra("name","hahaha hohohoho");
                //메인 화면으로 전달
                setResult(Activity.RESULT_OK,intent);
 
                //메뉴 화면 없애기
                finish();
 
            }
        });
 
    }
}
 

cs


반응형

댓글