728x90
안드로이드에서 글 혹은 댓글과 같은 것들을 수정 or 삭제 할 때, 다이얼로그를 자주 사용합니다.
이번에는 다이얼로그를 사용 후, 수정 사항과 같은 리턴 값을 액티비티로 보내는 글 입니다.
MainActivity 코드
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView text1 = findViewById(R.id.text1);
text1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String text = text1.getText().toString();
alert_scaner alert = new alert_scaner(MainActivity.this,text);
alert.callFunction();
alert.setModifyReturnListener(new alert_scaner.ModifyReturnListener() {
@Override
public void afterModify(String text) {
text1.setText(text);
System.out.println("!!!!!!!!!!!!!: " +text);
}
});
}
});
}
}
MainActivity 레이아웃
<?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=".MainActivity">
<TextView
android:id="@+id/text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
android:textSize="30dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintHorizontal_bias="0.458"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.155" />
</androidx.constraintlayout.widget.ConstraintLayout>
다이얼로그 코드
public class alert_scaner {
private Context context;
private String text;
public alert_scaner(Context context, String text) {
this.context = context;
this.text = text;
}
private ModifyReturnListener modifyReturnListener;
public interface ModifyReturnListener{
void afterModify(String content);
}
public void setModifyReturnListener(ModifyReturnListener modifyReturnListener){
this.modifyReturnListener = modifyReturnListener;
}
// 호출할 다이얼로그 함수를 정의한다.
public void callFunction() {
// 커스텀 다이얼로그를 정의하기위해 Dialog클래스를 생성한다.
final Dialog dlg = new Dialog(context); // 액티비티의 타이틀바를 숨긴다.
dlg.requestWindowFeature(Window.FEATURE_NO_TITLE); // 커스텀 다이얼로그의 레이아웃을 설정한다.
dlg.setContentView(R.layout.alert_scaner); // 커스텀 다이얼로그를 노출한다.
dlg.show(); // 커스텀 다이얼로그의 각 위젯들을 정의한다.
TextView conformBtn = (TextView) dlg.findViewById(R.id.conformBtn); // 확인 버튼
TextView backBtn = (TextView) dlg.findViewById(R.id.backBtn);
EditText scaneET = (EditText) dlg.findViewById(R.id.scaneET);
scaneET.setText(text);
backBtn.setOnClickListener(new View.OnClickListener() { //취소 버튼 눌렀을 때
@Override
public void onClick(View view) {
dlg.onBackPressed();
}
});
conformBtn.setOnClickListener(new View.OnClickListener() { // 수정 버튼 눌렀을 때
@Override
public void onClick(View view) {
String ModifyedText = scaneET.getText().toString(); //스케너에 있는 텍스트 String으로 가져오기
modifyReturnListener.afterModify(ModifyedText);
dlg.onBackPressed();
}
});
}
}
다이얼로그 레이아웃
<?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"
android:background="#eeeeee">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="300dp"
android:layout_height="150dp"
android:background="@color/white"
android:gravity="center"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<EditText
android:id="@+id/scaneET"
android:layout_width="match_parent"
android:layout_height="100dp"
android:background="@null"
android:gravity="center"
android:hint="입력해주세요"
android:textColor="@color/black"
android:textSize="20dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.0" />
<View
android:id="@+id/view"
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#FAAFACAC"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.637"
tools:ignore="MissingConstraints" />
<TextView
android:id="@+id/conformBtn"
android:layout_width="150dp"
android:layout_height="50dp"
android:gravity="center"
android:text="확인"
android:textColor="#325CA8"
android:textSize="20dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/view" />
<TextView
android:id="@+id/backBtn"
android:layout_width="150dp"
android:layout_height="50dp"
android:gravity="center"
android:text="취소"
android:textColor="#325CA8"
android:textSize="20dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="1.0"
app:layout_constraintStart_toEndOf="@+id/conformBtn"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/view" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
'안드로이드 자바' 카테고리의 다른 글
[JAVA][Android] 동적으로 생성한 View를 삭제하기 (0) | 2022.08.02 |
---|---|
[JAVA][Android] 동적으로 View 여러 개 추가 후 해당 View 드래그 앤 드랍으로 이동시키기 (0) | 2022.07.18 |
[JAVA][Android] xml파일 없이 Java 언어 만을 사용하여 화면 제작 (0) | 2022.07.03 |
[JAVA][Android] UTC 협정 세계시 (0) | 2022.06.16 |
[Java][Android] 안드로이드 하이라이트 커서 만들기 (0) | 2022.05.21 |