글 목록

최신 글과 검색 결과
DEVELOPMENT/MobileAppDev

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

간지뽕빨리턴님

이 글의 목차

    반응형

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

    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

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

    감사합니다!