▶Do it! 안드로이드 앱 프로그래밍(정재곤 지음) 참조
github.com/HanYeop/AndroidStudio-Practice
HanYeop/AndroidStudio-Practice
AndroidStudio Practice. Contribute to HanYeop/AndroidStudio-Practice development by creating an account on GitHub.
github.com
activity_main.xml
<?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"
tools:context=".MainActivity"
android:orientation="vertical">
<TextView
android:id="@+id/textView2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="프래그먼트 테스트"
android:textSize="24sp"
android:layout_marginLeft="5dp"/>
<FrameLayout
android:id="@+id/frame"
android:layout_width="match_parent"
android:layout_height="match_parent">
</FrameLayout>
</LinearLayout>
fragment_custom.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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"
tools:context=".CustomFragment">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="32dp"
android:layout_marginLeft="32dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="240dp"
android:layout_marginRight="240dp"
android:text="고객정보 입력"
android:textSize="24sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<EditText
android:id="@+id/editTextTextPersonName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="34dp"
android:layout_marginLeft="34dp"
android:layout_marginTop="60dp"
android:layout_marginEnd="167dp"
android:layout_marginRight="167dp"
android:ems="5"
android:hint="이름"
android:inputType="textPersonName"
android:textSize="24sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.014"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView" />
<EditText
android:id="@+id/editTextTextPersonName2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="34dp"
android:layout_marginLeft="34dp"
android:layout_marginTop="44dp"
android:layout_marginEnd="167dp"
android:layout_marginRight="167dp"
android:ems="5"
android:hint="나이"
android:inputType="number"
android:maxLength="3"
android:textSize="24sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.014"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/editTextTextPersonName" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="288dp"
android:padding="10dp"
android:text="저장"
android:textSize="24sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/editTextTextPersonName2" />
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="36dp"
android:layout_marginLeft="36dp"
android:layout_marginTop="64dp"
android:layout_marginEnd="287dp"
android:layout_marginRight="287dp"
android:text="생년월일"
android:textSize="24sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/editTextTextPersonName2" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="52dp"
android:text="Button"
android:textSize="24sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.85"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/editTextTextPersonName2" />
</androidx.constraintlayout.widget.ConstraintLayout>
MainActivity.java
package org.techtown.mission9;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
CustomFragment fragment = new CustomFragment();
// 추가할 fragment 생성
FragmentManager fragmentManager = getSupportFragmentManager();
// 프래그먼트 매니저 선언
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
// 프래그먼트 트랜잭션 시작
fragmentTransaction.add(R.id.frame,fragment); // 삽입할 위치, 삽입할 fragment
fragmentTransaction.commit(); // 트랜잭션 종료
}
}
CustomFragment.java
package org.techtown.mission9;
import android.app.DatePickerDialog;
import android.os.Bundle;
import androidx.annotation.Nullable;
import androidx.fragment.app.DialogFragment;
import androidx.fragment.app.Fragment;
import android.text.Editable;
import android.text.InputFilter;
import android.text.TextWatcher;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.Toast;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class CustomFragment extends Fragment {
EditText name;
EditText age;
Button birthday;
Date curDate = new Date(); // 현재
final SimpleDateFormat dataFormat = new SimpleDateFormat("yyyy년 MM월 dd일");
// SimpleDateFormat 으로 포맷 결정
String result = dataFormat.format(curDate);
public CustomFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_custom, container, false);
// 프래그먼트에 findViewByld 적용위해 View 선언
name = view.findViewById(R.id.editTextTextPersonName);
age = view.findViewById(R.id.editTextTextPersonName2);
birthday = view.findViewById(R.id.button);
birthday.setText(result); // 오늘 날짜로 초기화
birthday.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
showDateDialog(); // 생년월일 버튼 클릭 시 showDateDialog() 함수 호출
}
});
Button save = view.findViewById(R.id.button2);
save.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String nameStr = name.getText().toString();
String ageStr = age.getText().toString();
String birthStr = birthday.getText().toString();
Toast.makeText(getContext(),"이름 : "+nameStr +", 나이 : "+ageStr+", 생년월일 : "+birthStr
,Toast.LENGTH_SHORT).show();
}
}); // 저장 버튼 클릭 시 입력한 정보 표시
return view;
}
private void showDateDialog(){
Calendar calendar = Calendar.getInstance();
try {
curDate = dataFormat.parse(birthday.getText().toString());
// 문자열로 된 생년월일을 Date로 파싱
} catch(Exception ex) {
ex.printStackTrace();
}
calendar.setTime(curDate);
int curYear = calendar.get(Calendar.YEAR);
int curMonth = calendar.get(Calendar.MONTH);
int curDay = calendar.get(Calendar.DAY_OF_MONTH);
// 년,월,일 넘겨줄 변수
DatePickerDialog dialog = new DatePickerDialog(getContext(), birthDateSetListener, curYear, curMonth, curDay);
dialog.show();
}
private DatePickerDialog.OnDateSetListener birthDateSetListener = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker datePicker, int year, int month, int day) {
Calendar selectedCalendar = Calendar.getInstance();
selectedCalendar.set(Calendar.YEAR, year);
selectedCalendar.set(Calendar.MONTH, month);
selectedCalendar.set(Calendar.DAY_OF_MONTH, day);
// 달력의 년월일을 버튼에서 넘겨받은 년월일로 설정
Date curDate = selectedCalendar.getTime(); // 현재를 넘겨줌
setSelectedDate(curDate);
}
};
private void setSelectedDate(Date curDate) {
String selectedDateStr = dataFormat.format(curDate);
birthday.setText(selectedDateStr); // 버튼의 텍스트 수정
}
}
내 블로그 - 관리자 홈 전환 |
Q
Q
|
---|---|
새 글 쓰기 |
W
W
|
글 수정 (권한 있는 경우) |
E
E
|
---|---|
댓글 영역으로 이동 |
C
C
|
이 페이지의 URL 복사 |
S
S
|
---|---|
맨 위로 이동 |
T
T
|
티스토리 홈 이동 |
H
H
|
단축키 안내 |
Shift + /
⇧ + /
|
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.