혁신을 이룹니다, 오딘박스(OdinBOX)

언제나 어디서나 오딘박스와 함께!

안드로이드 스튜디오, TabHost와 AlertDialog 활용하기

간지뽕빨리턴님 2020. 5. 19. 20:27
반응형

안드로이드스튜디오,앱개발,모바일앱개발,과제,대학컴공,애플,아이폰,앱배포,구글,플레이스토어,코딩일기,대학생활

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

스스로 문제가 해결된 모습을 볼 때의 희열감 😍

감사합니다!