Frontend/실습

안드로이드앱 : 여러페이지 화면 개발

qoeka 2025. 3. 3. 13:58

화면 구현

 


기능구현

 

 

 

 

액티비티가 화면에 보였다가 사라질떄 실행되는 함수가 따로있다.

 

onCreate():

처음 등록할 때 한 번만 호출된다.
앱이 처음 실행되거나 새로운 Activity가 시작될 때 호출된다. 이곳에서 화면을 구성하는 초기 설정을 한다.
onResume():

화면에 Activity가 보이기 전에 호출된다.
화면이 사용자에게 보이기 시작할 때 호출된다. 주로 UI를 갱신하거나, 앱이 사용자와 상호작용을 시작할 때 사용된다.
onPause():

다른 화면으로 넘어갈 때 호출된다.
사용자가 Activity를 떠나거나 다른 화면으로 이동할 때 호출된다. 이곳에서는 앱이 화면에 보이지 않게 될 때 처리해야 할 작업들을 한다. 예를 들어, 비디오가 재생 중이라면 일시 정지하는 등의 작업이 필요하다.
onDestroy():

Activity가 종료될 때 한 번만 호출된다.
앱이나 Activity가 메모리에서 완전히 사라질 때 호출된다. 이 메서드에서는 자원 해제, 정리 작업을 수행한다.

 

 

Intent를 사용하여 MainActivity에서 SecondActivity로 데이터를 전달하는 한다.

코드에서 사용자는 이름과 나이를 입력하고, 이를 Intent로 SecondActivity로 보내고 있다.

putExtra 메서드를 사용하여 데이터를 전달하며, startActivity(intent)로 SecondActivity를 시작한다

 

 

메인 액티비티에서 Intent를 사용해 세컨드 액티비티를 띄우고(startActivity(intent)), 세컨드 액티비티에서는 getIntent()로 데이터를 받아와 getStringExtra()나 getIntExtra() 같은 메서드로 활용한다.

 

 

오류해결

 

 

더보기
package com.qoeka.life;

import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {

    EditText editName;
    EditText editAge;
    Button btnSave;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        editName = findViewById(R.id.editName);
        editAge = findViewById(R.id.editAge);
        btnSave = findViewById(R.id.bntSave);

        // 버튼 클릭 이벤트 설정
        btnSave.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String name =editName.getText().toString().trim();
                String strAge =editAge.getText().toString().trim();

                //유저가 꼭 입력할 수 있게
                if(name.isEmpty() || strAge.isEmpty()){
                    Toast.makeText(MainActivity.this,"이름과 나이는 필수입니다",Toast.LENGTH_SHORT).show();
                    return;
                }

                int age =Integer.parseInt(strAge);



                // SecondActivity로 이동하는 Intent 생성
                Intent intent = new Intent(MainActivity.this, SecondActivity.class);
                intent.putExtra("name",name);
                intent.putExtra("age",age);
                startActivity(intent);


            }
        });
    }

    @Override
    protected void onResume() {
        super.onResume();
        // 토스트 메시지 표시
        Toast.makeText(MainActivity.this, "안녕", Toast.LENGTH_SHORT).show();

        Log.i("MyApp","Main: onResume");


    }
}

 

package com.qoeka.life;

import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;

import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;

public class SecondActivity extends AppCompatActivity {

    TextView txtName;
    TextView txtAge;

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

        setContentView(R.layout.activity_second);

        Log.i("MyApp", "oneCreate");
        txtName=findViewById(R.id.txtName);
        txtAge=findViewById(R.id.txtAge);

        // 메인 액티비티가 보낸 데이터를 받아준다.
        String name =getIntent().getStringExtra("name");
        int age =getIntent().getIntExtra("age",-1);

        //화면에 표시한다
        txtName.setText("이름은"+name+"입니다");

        txtAge.setText(""+age+"살입니다");




    }

    @Override
    protected void onResume() {
        super.onResume();
        Log.i("MyApp", "second : onPause");

    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.i("MyApp","second : onDest");
    }
}

 

 

 

 

 

SecondActivity에서 데이터를 받아서 TextView에 표시하는 코드이다.

왼쪽 코드에서는 Intent를 사용하여 name과 age를 받아오고, 오른쪽에서는 그 값을 TextView에 출력한다.

또한, 데이터를 문자열로 결합하여 data라는 변수에 저장하고, back 버튼이 눌렸을 때 onBackPressed를 호출하는 로직도 포함되어 있다

 

세컨드 엑티비티가 할 일은 끝이다

이제 다시 메인 엑트비티로 가겠다

 

 

 

 

변수만들어주겠다

 

 

결과받아오는애 이거 갖다쓰면됨앞으로

 

   ActivityResultLauncher<Intent> launcher =
            registerForActivityResult(new ActivityResultContracts.StartActivityForResult(),
                    new ActivityResultCallback<ActivityResult>() {
                        @Override
                        public void onActivityResult(ActivityResult o) {
                            
                        }
                    });

 

o안에 있는걸끄집어낸다