기술 블로그
[안드로이드 복습] 6장 안드로이드는 액티비티다. 본문
반응형
안드로이드 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 |
반응형
'Android' 카테고리의 다른 글
layoutInflater (0) | 2018.11.17 |
---|---|
[안드로이드 복습]7장 암시적 인텐트 (0) | 2018.11.17 |
[안드로이드 복습]3장 뷰와 간단한 인텐트 (0) | 2018.11.17 |
[안드로이드 복습] 10장 화면제약을 극복하기(스크롤뷰와 리스트뷰) (0) | 2018.11.16 |
android soundpool 사용하기 (0) | 2018.10.20 |
Comments