ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Android 실습 (12)
    Android 2022. 7. 20. 17:47

    위 이미지와 같이 menu를 만들어줍니다

     

     

    fragment1, fragment2, fragment3을 만들어줍니다

     

     

     

    < MainActivity >

    package com.example.ex_0720;
    
    import androidx.annotation.NonNull;
    import androidx.appcompat.app.AppCompatActivity;
    
    import android.os.Bundle;
    import android.view.MenuItem;
    
    import com.google.android.material.bottomnavigation.BottomNavigationView;
    import com.google.android.material.navigation.NavigationBarView;
    
    public class MainActivity extends AppCompatActivity {
    
        BottomNavigationView nav;
    
        // 각각의 fragment class에 접근할 수 있는 객체 필요!
        Fragment1 fragment1;
        Fragment2 fragment2;
        Fragment3 fragment3;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            nav = findViewById(R.id.nav);
    
            fragment1 = new Fragment1();
            fragment2 = new Fragment2();
            fragment3 = new Fragment3();
    
            // 화면 기본 설정을 위한 fragment연결 필요!
            getSupportFragmentManager().beginTransaction().replace(R.id.frame, fragment1).commit();
    
            // nav에 대한 이벤트 생성하기
            nav.setOnItemSelectedListener(new NavigationBarView.OnItemSelectedListener() {
                @Override
                public boolean onNavigationItemSelected(@NonNull MenuItem item) {
    
                    // 선택한 item에 따라 띄워줘야하는 fragment로 연결!
                    // 선택한 item을 알아내는 방법 -> item.getItemId()
                    if (item.getItemId() == R.id.home_item){
                        // fragment1 이동
                        // getSupportFragmentManager() : Fragment를 관리하기 위한 기능을 가지고 있는 기능
                        // replace(어떤 영역에(고정된 틀) , 어떤 프레임을 띄울건지)
                        getSupportFragmentManager().beginTransaction().replace(R.id.frame, fragment1).commit();
                    }else if (item.getItemId() == R.id.smhrd_item){
                        // fragment2 이동
                        getSupportFragmentManager().beginTransaction().replace(R.id.frame, fragment2).commit();
                    }else if (item.getItemId() == R.id.setting_item){
                        // fragment3 이동
                        getSupportFragmentManager().beginTransaction().replace(R.id.frame, fragment3).commit();
                    }
    
                    return true; // 선택된 Item 반환!
                }
            });
        }
    }

     

    < Fragment1 >

    package com.example.ex_0720;
    
    import android.content.Context;
    import android.content.SharedPreferences;
    import android.os.Bundle;
    
    import androidx.fragment.app.Fragment;
    
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.TextView;
    
    public class Fragment1 extends Fragment {
    
        TextView txt;
    
        // ★★★★★ Fragment 화면 구상에 가장 필요한 메소드!
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
    
            View fragment = inflater.inflate(R.layout.fragment_1, container, false);
    
            // fragment에 필요한 화면 구상 작업 진행
    
            txt = fragment.findViewById(R.id.txt);
    
            // 화면이 실행되면 SharedPreferences에 저장된 값을 가져와서 띄워주기
            // 1. SharedPreferences 객체 생성
            SharedPreferences shared = getActivity().getPreferences(Context.MODE_PRIVATE);
    
            // 2. 저장된 값 가져오기 -> getString(제대로 가져올 수 있는 값, 오류시 가져올 값)
            String result = shared.getString("data", "error");
    
            txt.setText(result.toString());
    
            return fragment;
        }
    }

     

    < Fragment2 >

    package com.example.ex_0720;
    
    import android.os.Bundle;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.webkit.WebSettings;
    import android.webkit.WebView;
    import android.webkit.WebViewClient;
    
    import androidx.fragment.app.Fragment;
    
    public class Fragment2 extends Fragment {
    
        WebView web;
    
        // ★★★★★ Fragment 화면 구상에 가장 필요한 메소드!
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
    
            View fragment = inflater.inflate(R.layout.fragment_2, container, false);
    
            // fragment2에 필요한 화면 구상 작업 진행
    
            web = fragment.findViewById(R.id.web);
    
            // 네비게이션 바가 보이지 않도록 설정 셋팅하기
            WebSettings setting = web.getSettings();
            setting.setJavaScriptEnabled(true);
    
            // 웹페이지 요청을 할 수 있는 객체 불러오기!
            web.setWebViewClient(new WebViewClient());
    
            // 이동할 url 지정하기
            web.loadUrl("https://www.smhrd.or.kr");
    
            return fragment;
        }
    }

     

    < Fragment3 >

    package com.example.ex_0720;
    
    import android.content.Context;
    import android.content.SharedPreferences;
    import android.os.Bundle;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.Button;
    import android.widget.EditText;
    
    import androidx.fragment.app.Fragment;
    
    public class Fragment3 extends Fragment {
    
        EditText txt_input;
        Button btn;
    
        // ★★★★★ Fragment 화면 구상에 가장 필요한 메소드!
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
    
            View fragment = inflater.inflate(R.layout.fragment_3, container, false);
    
            // fragment에 필요한 화면 구상 작업 진행
            btn = fragment.findViewById(R.id.btn);
            txt_input = fragment.findViewById(R.id.txt_input);
    
            // 어플이 종료되더라도 유지하고자 하는 데이터를 저장하는 객체 생성!
            // SharedPreferences
            SharedPreferences shared = getActivity().getPreferences(Context.MODE_PRIVATE);
    
            // 데이터를 저장할 수 있는 기능 불러오기
            SharedPreferences.Editor editor = shared.edit();
    
            // 버튼이 눌렸을 경우 작성된 텍스트값 SharedPreferences를 통해 데이터 저장후 유지하기
            btn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    String data = txt_input.getText().toString();
    
                    // 데이터 저장하기 -> putString(Key, value)
                    editor.putString("data", data);
                    editor.commit();
                }
            });
    
            return fragment;
        }
    }

     

    < 결과 화면 >

    setting에서 home에 뜰 문구를 변경할 수 있습니다

     

    하단의 smhrd를 누르면 설정해둔 홈페이지로 이동합니다

     

    'Android' 카테고리의 다른 글

    Android 이론 (4)  (0) 2022.07.20
    Android 실습 (11)  (0) 2022.07.19
    Android 실습 (10)  (0) 2022.07.19
    Android 실습 (9)  (0) 2022.07.18
    Android 실습 (8)  (0) 2022.07.15

    댓글

Designed by Tistory.