“ 매주 목요일마다 당신이 항상 하던대로 신발끈을 묶으면 신발이 폭발한다고 생각해보라.
컴퓨터를 사용할 때는 이런 일이 항상 일어나는데도 아무도 불평할 생각을 안 한다. ”- Jef Raskin
맥의 아버지 - 애플컴퓨터의 매킨토시 프로젝트를 주도
반응형
안드로이드스튜디오,앱개발,모바일앱개발,과제,대학컴공,애플,아이폰,앱배포,구글,플레이스토어,코딩일기,대학생활
AlertDialog와 TabHost등을 활용하여, 어플 만들기
과제 일시 : 2020 - 05 - 19
오늘은 AlertDialog를 활용하여, 선택된 것을 출력하고 TabHost를 활용하여 각 탭마다 원하는 정보를 넣고 출력하는 어플을 제작해보았습니다. 아직 서툴러서 이것저것 만져보고 확인해보고 안되는 것이 생각보다 해결이 되질않아 여기저기 조언을 구했는데 결국 간단한 방법으로 해결이 되었습니다. 실행화면과 소스 코드 보여드리겠습니다.
[실행화면 (execution screen)]
기존 영화 버튼을 누르면, 예매되었습니다. 취소되었습니다. 두 가지가 나오게 되었는데. 원하는 영화 탭에서 예매버튼을 누르면 해당 영화 이름과 예매되었습니다가 나오게 수정했습니다.
[소스 코드 (Source Code)]
* MainActivity.java
package com.example.exam06;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TabHost;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
TabHost tabhost;
Button btnOk01, btnOk02, btnOk03;
String movieTitle;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tabhost = (TabHost) findViewById(R.id.tabhost);
tabhost.setup();
TabHost.TabSpec ts1 = tabhost.newTabSpec("기생충");
ts1.setContent(R.id.tab1);
ts1.setIndicator("기생충");
tabhost.addTab(ts1);
TabHost.TabSpec ts2 = tabhost.newTabSpec("피아니스트");
ts2.setIndicator("피아니스트");
ts2.setContent(R.id.tab2);
tabhost.addTab(ts2);
TabHost.TabSpec ts3 = tabhost.newTabSpec("해바라기");
ts3.setIndicator("해바라기");
ts3.setContent(R.id.tab3);
tabhost.addTab(ts3);
btnOk01 = (Button) findViewById(R.id.btnOk01);
btnOk01.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
movieTitle = "기생충";
Toast.makeText(MainActivity.this, movieTitle, Toast.LENGTH_SHORT).show();
movieSelect(v);
}
});
btnOk02 = (Button) findViewById(R.id.btnOk02);
btnOk02.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
movieTitle = "피아니스트";
Toast.makeText(MainActivity.this, movieTitle, Toast.LENGTH_SHORT).show();
movieSelect(v);
}
});
btnOk03 = (Button) findViewById(R.id.btnOk03);
btnOk03.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
movieTitle = "해바라기";
Toast.makeText(MainActivity.this, movieTitle, Toast.LENGTH_SHORT).show();
movieSelect(v);
}
});
}
public void movieSelect (View v){
AlertDialog.Builder message = new androidx.appcompat.app.AlertDialog.Builder(this);
message.setMessage(movieTitle + "을 예매하시느게 맞나요?");
message.setPositiveButton(movieTitle + "가 예매하겠습니다.", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, movieTitle + "을 예매되었습니다.", Toast.LENGTH_SHORT).show();
}
});
message.setNegativeButton("아니요", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "취소되었습니다.", Toast.LENGTH_SHORT).show();
}
});
AlertDialog alert = message.create();
alert.show();
}
}
* activity_main.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=".MainActivity">
<TabHost
android:id="@+id/tabhost"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TabWidget
android:id="@android:id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/tab1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ImageView
android:id="@+id/movie01"
android:layout_width="match_parent"
android:layout_height="300sp"
android:src="@drawable/movie01" />
<TextView
android:id="@+id/textView01"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="30dp"
android:text="기생충"
android:background="#FF0000"
android:gravity="center_horizontal"
android:textAppearance="@style/TextAppearance.AppCompat.Display1" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="예매"
android:id="@+id/btnOk01" />
</LinearLayout>
<LinearLayout
android:id="@+id/tab2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ImageView
android:id="@+id/movie02"
android:layout_width="match_parent"
android:layout_height="300sp"
android:src="@drawable/movie02" />
<TextView
android:id="@+id/textView02"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="30dp"
android:text="피아니스트"
android:background="#FFEB3B"
android:gravity="center_horizontal"
android:textAppearance="@style/TextAppearance.AppCompat.Display1" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="예매"
android:id="@+id/btnOk02" />
</LinearLayout>
<LinearLayout
android:id="@+id/tab3"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ImageView
android:id="@+id/movie03"
android:layout_width="match_parent"
android:layout_height="300sp"
android:src="@drawable/movie03" />
<TextView
android:id="@+id/textView03"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="30dp"
android:text="해바라기"
android:background="#3F51B5"
android:gravity="center_horizontal"
android:textAppearance="@style/TextAppearance.AppCompat.Display1" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="예매"
android:id="@+id/btnOk03" />
</LinearLayout>
</FrameLayout>
</LinearLayout>
</TabHost>
</androidx.constraintlayout.widget.ConstraintLayout>
정상적으로 프로그램이 동작하는 것을 확인했습니다 :D
스스로 문제가 해결된 모습을 볼 때의 희열감 😍
감사합니다!