참고 그림에선 fragment라고 썼지만 사실 activity다...
activity 위에서 생성되는게 fragment인데 여기선 activity간 이동이었다... 아무튼!
activity에서 정보를 입력받아 custom dialog에 띄우고 거기서 버튼 누르면 다른 activity로 이동하기!
이거 찾는데 오래걸렸고,, 막 질문글도 썼었고.... 그래서 포스팅한다. 다들 화이팅!
activity에서 custom dialog로 정보 보내고 dialog에서 다른 activity로 이동하기
1번
manu_createqr.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="QR 생성 정보 입력하기"
android:textStyle="bold"
android:textColor="@color/black"
android:textSize="20dp"
android:layout_margin="20dp" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="제품명"
android:textColor="@color/black"
android:layout_marginHorizontal="20dp" />
<EditText
android:id="@+id/facProductName"
android:layout_width="match_parent"
android:layout_height="45dp"
android:layout_marginHorizontal="20dp"
android:layout_marginTop="10dp"
android:autofillHints="dd"
android:background="@drawable/edit_syle"
android:padding="10dp"
android:entries="@array/qrName"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="제품브랜드"
android:textColor="@color/black"
android:layout_marginTop="20dp"
android:layout_marginHorizontal="20dp" />
<Spinner
android:id="@+id/facBrandSpinner"
android:layout_width="match_parent"
android:layout_height="45dp"
android:layout_marginHorizontal="20dp"
android:layout_marginTop="10dp"
android:background="@drawable/edit_syle"
android:padding="10dp"
android:entries="@array/qrBrand"
/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="시리얼넘버"
android:textColor="@color/black"
android:layout_marginTop="20dp"
android:layout_marginHorizontal="20dp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<EditText
android:id="@+id/facSerial"
android:layout_width="match_parent"
android:layout_height="45dp"
android:layout_marginLeft="20dp"
android:layout_marginRight="5dp"
android:layout_marginTop="10dp"
android:layout_weight="9"
android:background="@drawable/edit_syle"
android:padding="10dp" />
<Button
android:id="@+id/facCreateButton"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_marginRight="20dp"
android:backgroundTint="#000000"
android:text="생성\n하기"
android:textColor="@color/white"
android:textSize="12sp" />
</LinearLayout>
<Button
android:id="@+id/createQRbtn"
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_marginTop="50dp"
android:layout_marginHorizontal="10dp"
android:backgroundTint="#000000"
android:text="다음"
android:textColor="@color/white"
/>
</LinearLayout>
사진에서 정보를 3개 받아와서 custom dialog로 보낸다.
public class manu_createQR_Activity extends AppCompatActivity {
String Brand = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.manu_createqr);
EditText facProductName = (EditText) findViewById(R.id.facProductName);
Spinner facBrandSpinner = (Spinner) findViewById(R.id.facBrandSpinner);
EditText facSerial = (EditText) findViewById(R.id.facSerial);
Button createQRbtn = (Button) findViewById(R.id.createQRbtn);
//QR 생성하기 버튼을 눌렀을 때 -> QR 생성 정보 다이어로그 -> QR이 생성되었습니다 + QR보여주기
createQRbtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String Name = facProductName.getText().toString();
Brand = facBrandSpinner.getSelectedItem().toString();
if(facBrandSpinner.getSelectedItem().toString() == "브랜드를 선택해주세요.")
Brand = null;
String Serial = facSerial.getText().toString();
manu_createQR_Dialog dialog = new manu_createQR_Dialog(manu_createQR_Activity.this, Name, Brand, Serial);
dialog.show();
}
});
}
}
2번
manu_alert_qrcreate.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_margin="20dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:background="@drawable/alert_style">
<!--dialog?.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
dialog?.window?.requestFeature(Window.FEATURE_NO_TITLE)-->
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="20dp"
android:text="QR 생성 정보"
android:textColor="@color/black"
android:textSize="20dp"
android:textStyle="bold" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/qrCreateName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginHorizontal="20dp"
android:text="제품명: "
android:textColor="@color/black" />
<TextView
android:id="@+id/qrName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginHorizontal="20dp"
android:text="(제품명)"
android:textColor="@color/black" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/qrCreateBrand"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="제품브랜드: "
android:textColor="@color/black"
android:layout_marginHorizontal="20dp"
android:layout_marginTop="5dp"
/>
<TextView
android:id="@+id/qrBrand"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginHorizontal="20dp"
android:text="(브랜드명)"
android:textColor="@color/black" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/qrCreateSerial"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="시리얼넘버: "
android:textColor="@color/black"
android:layout_marginHorizontal="20dp"
android:layout_marginTop="5dp"
/>
<TextView
android:id="@+id/qrSerial"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginHorizontal="20dp"
android:text="(시리얼넘버)"
android:textColor="@color/black" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/qrCreateBtn"
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_weight="1"
android:layout_marginTop="10dp"
android:layout_marginRight="10dp"
android:layout_marginLeft="20dp"
android:backgroundTint="#000000"
android:text="다음"
android:textColor="@color/white" />
<Button
android:id="@+id/qrCancelBtn"
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_weight="1"
android:layout_marginTop="10dp"
android:layout_marginRight="20dp"
android:layout_marginLeft="10dp"
android:backgroundTint="#000000"
android:text="취소"
android:textColor="@color/white" />
</LinearLayout>
</LinearLayout>
사진인 custom dialog에서 받은 정보를 띄운다
public class manu_createQR_Dialog extends Dialog {
private static String IP_ADDRESS = "IP 주소";
private static String TAG = "manufacturer_QR";
private Context context;
private String Name, Brand, Serial;
public manu_createQR_Dialog(Context context, String Name, String Brand, String Serial) {
super(context);
this.context = context;
this.Name = Name;
this.Brand = Brand;
this.Serial = Serial;
}
public interface MyDialogListener{
public void onPositiveClicked(String name, String brand, String serial);
public void onNegativeClicked();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE); // 다이얼로그 타이틀바 없애기
getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); // 배경 투명으로
setContentView(R.layout.manu_alert_qrcreate);
TextView ProductName = (TextView) findViewById(R.id.qrName);
TextView ProductBrand = (TextView) findViewById(R.id.qrBrand);
TextView ProductSerial = (TextView) findViewById(R.id.qrSerial);
ProductName.setText(Name);
ProductBrand.setText(Brand);
ProductSerial.setText(Serial);
//버튼
Button qrCreateBtn = (Button) findViewById(R.id.qrCreateBtn);
Button qrCancelBtn = (Button) findViewById(R.id.qrCancelBtn);
//등록 버튼
registerBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dismiss();
intent = new Intent(getContext(), manu_createQR_see.class); //manu_createQR_see fragment로 이동
getContext().startActivity(intent);
}
});
//등록 취소 버튼
registerCancelBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dismiss();
Toast.makeText(getContext().getApplicationContext(), "취소되었습니다.", Toast.LENGTH_SHORT).show();
}
});
}
}
3번
manu_createqr_complete.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:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/imageView2"
android:layout_width="300dp"
android:layout_height="150dp"
android:layout_gravity="center"
android:layout_marginTop="20dp"
tools:srcCompat="@drawable/createqrdone" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginHorizontal="20dp"
android:layout_weight="2"
android:layout_margin="20dp"
android:orientation="vertical"
android:background="@drawable/round_1w_r7_style">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<!--임시소스-->
<ImageView
android:id="@+id/qrCreateImage"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_gravity="center"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/qrexample" />
</androidx.constraintlayout.widget.ConstraintLayout>
</LinearLayout>
<Button
android:id="@+id/facQrHomeButton"
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_marginHorizontal="10dp"
android:layout_marginBottom="20dp"
android:backgroundTint="#000000"
android:text="홈으로 가기"
android:textColor="@color/white"
/>
</LinearLayout>
class
public class manu_createQR_see extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.manu_createqr_complete);
}
}
참고로 custom dialog activity는 AndroidManifest.xml에 activity 추가할 때
<activity android:name=".manu_createQR_Dialog" android:theme="@android:style/Theme.Dialog"/>
이렇게 넣어야한다.