기술 블로그

[안드로이드 복습] 6장 안드로이드는 액티비티다. 본문

Android

[안드로이드 복습] 6장 안드로이드는 액티비티다.

jaegwan 2018. 11. 17. 11:52
반응형

안드로이드 4대 구성요소


1. 액티비티 : 눈에보이는화면을 만들때 최소 1개 필요


2. 리시버:  브로드캐스트(안드로이드 내부의 전화,알람,문자,방전등)객체를 수신하는 것이 리시버 


3. 프로바이더: db나 파일의 정보를 외부의 앱에 공개하기위한 객체. 주로 앱간 데이터공유에 사용


4. 서비스 : 액티비티와 별개로 백그라운드에서 오래 실행되어야 하는 앱에 사용 ,화면이 없음 





데이터를 주고받는 과정


1.  a 액티비티에서  StartActiviyForResult()로  b 액티비티 시작


2  b 액티비티에서 setResult()로 결과를 a 액티비티로 전달 (startactivty로 전달시 뒤로가기할때 a가 2번나옴;)


3. a 액티비티의 onActivityResult()에서 b 엑티비티에서 전달받은 데이터 처리 



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
public class MainActivity extends AppCompatActivity implements View.OnClickListener {//지금은 기본으로 가장많은기능을 가진 AppCompatActivity를 상속받는다.
 
    public static final int REQUEST_CODE = 1000;
    private EditText namee;
    private EditText agee;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
         namee = findViewById(R.id.name);
         agee = findViewById(R.id.age);
 
 
 
 
       findViewById(R.id.submit).setOnClickListener(this); //mainactivity가 onclickListner를 구현하기위해 View.OnclickListner 인터페이스를 구현합니다.
//View.onclickListner인터페이스 안에 onclick메소드가 있으니 이 안에 작성하도록 설계되어 있다.
 
 
    }
 
    @Override
    public void onClick(View v) {
        Intent intent = new Intent(this,sub.class);
        intent.putExtra("name",namee.getText().toString());
        intent.putExtra("age",agee.getText().toString());
 
        startActivityForResult(intent, REQUEST_CODE); //intent의 정보를 토대로 startActivityForResult메소드 실행 파라미터는 (intent,REQUEST_CODE)

        
 
 
    }
 
    @Override //돌려받은 결과를 처리하는 콜 백 onActivityResult에서 결과를 처리
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
 
        if(requestCode==REQUEST_CODE&&resultCode==RESULT_OK&&data!=null){//리퀘스트코드가 같은지 확인,리설트 코드가 result_ok인지확인,data가 널이 아닌지 확인
            String result = data.getStringExtra("result");//온 액티비티 리설트는 다른 액티비티에서 setResult코드가 실행되면 이게 실행된다. data형태로 리턴되며 data를 intent처럼 사용한다.
//
            Toast.makeText(this, result, 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
41
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
 
import org.w3c.dom.Text;
 
public class sub extends AppCompatActivity implements View.OnClickListener {
    TextView t;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sub);
 
        Intent intent = getIntent();//겟인텐트 빈칸
 
        String pname = intent.getStringExtra("name");//putextra와 getStirngextra//해쉬값아이디는 큰따옴표로 감싼다.
        String page = intent.getStringExtra("age");
 
         t = findViewById(R.id.textView);
 
        t.setText(pname+"그리고"+page);

//버튼 이벤트 연결,
 
        findViewById(R.id.button).setOnClickListener(this);//. 셋온클릭 디스 다음에는 알트엔터로 온클릭을 implements한다.
 
    }
 
    @Override
    public void onClick(View v) {
 
        Intent intent = new Intent();//자동으로 리턴되기 떄문에 인자값 안넣어줘도 됨
        intent.putExtra("result",t.getText().toString());//보낼 값의 키는 "result"로 한다.
        setResult(RESULT_OK,intent);//셋 리설트로 리턴하고 리설트 ok로 리설트코트 넣고  보낼인텐트도 넣고

//파라미터 = (결과코드,인텐트)
 
        finish();//이 액티비티는 죽임
 
    }
}
 
cs


반응형
Comments