앱에서 사용될 수 있는 여러 화면을 구성하고 각 화면을 전환하면서 토스트메시지를 띄워주도록 만들어 보세요.
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:width="150sp" android:height="30dp"> <shape> <solid android:color="#ffffff"/> <stroke android:width="1.5dp" android:color="#aa33bbbb"/> </shape> </item> </layer-list>
<?xml version="1.0" encoding="utf-8"?> <resources> //코드 추가 <color name="mainColor">#AA33BBBB</color> <color name="mainTintColor">#FF44CCCC</color> </resources>
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:background="#ffffff" tools:context=".MainActivity"> <LinearLayout android:id="@+id/titleLayout" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/mainColor"> <TextView android:id="@+id/LoginTitle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="20dp" android:text="로그인하기" android:textSize="25sp" android:textColor="#ffffff" android:textStyle="bold"/> </LinearLayout> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_gravity="center" android:layout_marginTop="100dp"> <LinearLayout android:id="@+id/txtLogin" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:gravity="center"> <EditText android:id="@+id/edtId" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="5dp" android:paddingLeft="10dp" android:paddingRight="10dp" android:textSize="12sp" android:hint="ID" android:inputType="text" android:singleLine="true" android:maxLength="12" android:background="@drawable/edittext_draw"/> <EditText android:id="@+id/edtPwd" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="5dp" android:paddingLeft="10dp" android:paddingRight="10dp" android:textSize="12sp" android:hint="Password" android:inputType="textPassword" android:singleLine="true" android:maxLength="16" android:background="@drawable/edittext_draw"/> </LinearLayout> <Button android:id="@+id/btnLogin" android:layout_width="100dp" android:layout_height="70dp" android:layout_marginTop="4dp" android:layout_marginLeft="20dp" android:backgroundTint="@color/mainTintColor" android:background="#aa33bbbb" android:textColor="#ffffff" android:textStyle="bold" android:text="로그인" android:textSize="18sp"/> </LinearLayout> </LinearLayout>
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity"> <LinearLayout android:id="@+id/titleLayout" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/mainColor"> <TextView android:id="@+id/menuTitle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="20dp" android:text="메인 메뉴" android:textSize="25sp" android:textColor="#ffffff" android:textStyle="bold"/> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:paddingBottom="250dp" android:gravity="center"> <Button android:id="@+id/btnCustomCare" android:layout_width="130dp" android:layout_height="wrap_content" android:background="@color/mainColor" android:layout_margin="20dp" android:text="고객 관리" android:textSize="20sp" android:textColor="#ffffff" android:textStyle="bold" android:backgroundTint="@color/mainTintColor"/> <Button android:id="@+id/btnSalesCare" android:layout_width="130dp" android:layout_height="wrap_content" android:background="@color/mainColor" android:layout_margin="20dp" android:text="매출 관리" android:textSize="20sp" android:textColor="#ffffff" android:textStyle="bold" android:backgroundTint="@color/mainTintColor"/> <Button android:id="@+id/btnProductCare" android:layout_width="130dp" android:layout_height="wrap_content" android:background="@color/mainColor" android:layout_margin="20dp" android:text="상품 관리" android:textSize="20sp" android:textColor="#ffffff" android:textStyle="bold" android:backgroundTint="@color/mainTintColor"/> </LinearLayout> </LinearLayout>
<br>
## [ activity_custom.xml ]
>
```java
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
>
<LinearLayout
android:id="@+id/titleLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/mainColor">
<TextView
android:id="@+id/subTitle1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="20dp"
android:text="고객 관리"
android:textSize="25sp"
android:textStyle="bold"
android:textColor="#ffffff"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="400dp"
android:orientation="vertical"
android:gravity="center">
<Button
android:id="@+id/btnCustomMenu"
android:layout_width="130dp"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:text="메뉴로"
android:textColor="#ffffff"
android:textStyle="bold"
android:textSize="18sp"
android:background="@color/mainColor"
android:backgroundTint="@color/mainTintColor"/>
<Button
android:id="@+id/btnCustomLogin"
android:layout_width="130dp"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:text="로그인으로"
android:textColor="#ffffff"
android:textStyle="bold"
android:textSize="18sp"
android:background="@color/mainColor"
android:backgroundTint="@color/mainTintColor"/>
</LinearLayout>
</LinearLayout>
package com.study.doit; import androidx.activity.result.ActivityResult; import androidx.activity.result.ActivityResultCallback; import androidx.activity.result.ActivityResultLauncher; import androidx.activity.result.contract.ActivityResultContract; import androidx.activity.result.contract.ActivityResultContracts; import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.graphics.Color; import android.nfc.Tag; import android.os.Bundle; import android.text.Editable; import android.text.TextWatcher; import android.util.Log; import android.view.Menu; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.ImageView; import android.widget.ProgressBar; import android.widget.SeekBar; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends AppCompatActivity { private static final String TAG = "MainActivity"; public static final int MENU_CODE_LOGIN = 10001; EditText edtId, edtPwd; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); edtId = findViewById(R.id.edtId); edtPwd = findViewById(R.id.edtPwd); Button btnLogin = findViewById(R.id.btnLogin); Intent intent = getIntent(); String prev = null; try { prev = intent.getExtras().getString("from"); Toast.makeText(getApplicationContext(), prev + " -> Main", Toast.LENGTH_SHORT).show(); } catch(Exception e){ } btnLogin.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if(edtId.getText().toString().replace(" ", "").equals("") || edtPwd.getText().toString().replace(" ", "").equals("") ) { Toast.makeText(getApplicationContext(), "회원 정보를 확인해주세요.", Toast.LENGTH_SHORT).show(); } else { moveActivity(); } } }); } ActivityResultLauncher startActivityResult = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), new ActivityResultCallback<ActivityResult>() { @Override public void onActivityResult(ActivityResult result) { } }); public void moveActivity(){ Intent intent = new Intent(getApplicationContext(), MenuActivity.class); intent.putExtra("from", "Main"); startActivityResult.launch(intent); finish(); } }
package com.study.doit; import androidx.activity.result.ActivityResult; import androidx.activity.result.ActivityResultCallback; import androidx.activity.result.ActivityResultLauncher; import androidx.activity.result.contract.ActivityResultContracts; import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.nfc.Tag; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.Toast; public class MenuActivity extends AppCompatActivity implements View.OnClickListener { private static final String TAG = "MenuActivity"; public static final int MENU_CODE_CUSTOM = 1000127; public static final int MENU_CODE_SALES = 1000373; public static final int MENU_CODE_PRODUCT = 1000117; Button btnCustomCare, btnProductCare, btnSalesCare; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_menu); btnCustomCare = findViewById(R.id.btnCustomCare); btnProductCare = findViewById(R.id.btnProductCare); btnSalesCare = findViewById(R.id.btnSalesCare); btnCustomCare.setOnClickListener(this); btnProductCare.setOnClickListener(this); btnSalesCare.setOnClickListener(this); Intent intent = getIntent(); String prev = intent.getExtras().getString("from"); Toast.makeText(getApplicationContext(), prev + " -> Menu", Toast.LENGTH_SHORT).show(); } ActivityResultLauncher moveActivity = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), new ActivityResultCallback<ActivityResult>() { @Override public void onActivityResult(ActivityResult result) { } }); @Override public void onClick(View view) { Intent intent; switch(view.getId()){ case R.id.btnCustomCare: intent = new Intent(this, CustomActivity.class); intent.putExtra("from", "Menu"); moveActivity.launch(intent); finish(); break; case R.id.btnProductCare: intent = new Intent(this, ProductActivity.class); intent.putExtra("from", "Menu"); moveActivity.launch(intent); finish(); break; case R.id.btnSalesCare: intent = new Intent(this, SalesActivity.class); intent.putExtra("from", "Menu"); moveActivity.launch(intent); finish(); break; } } }
package com.study.doit; import androidx.activity.result.ActivityResult; import androidx.activity.result.ActivityResultCallback; import androidx.activity.result.ActivityResultLauncher; import androidx.activity.result.contract.ActivityResultContracts; import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.Toast; public class CustomActivity extends AppCompatActivity implements View.OnClickListener{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_custom); findViewById(R.id.btnCustomMenu).setOnClickListener(this); findViewById(R.id.btnCustomLogin).setOnClickListener(this); Intent intent = getIntent(); String prev = intent.getExtras().getString("from"); Toast.makeText(getApplicationContext(), prev + " -> Custom", Toast.LENGTH_SHORT).show(); } ActivityResultLauncher MoveAtCustom = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), new ActivityResultCallback<ActivityResult>() { @Override public void onActivityResult(ActivityResult result) { } }); @Override public void onClick(View view) { Intent intent; switch(view.getId()) { case R.id.btnCustomMenu: intent = new Intent(this, MenuActivity.class); intent.putExtra("from", "Custom"); MoveAtCustom.launch(intent); finish(); break; case R.id.btnCustomLogin: intent = new Intent(this, MainActivity.class); intent.putExtra("from", "Custom"); MoveAtCustom.launch(intent); finish(); break; } } }
그 외 다른 서브페이지 2개도 activity_custom.xml 과 CustomActivity.java와 같이 만들어주면 됩니다.
토스트 메시지를 이용하여 어디에서 어디로 이동했는지 표시했으며
사진 차례대로
으로 전 과정에서 언급한 '고객 관리' 액티비티를 제외한 모든 액티비티를 하나씩 거치는 과정을 인증했습니다.
putExtra()
라는 메서드를 이용하여 딕셔너리(키 : 값) 으로 넘겨줌을 알았고// String값일 시
String s = getExtras().getString("Key값");
getId()
로 id 값을 받아 id 값에 따른 이벤트 구현을 만들 수 있음을 학습하였습니다.