-
Android 실습 (12)Android 2022. 7. 20. 17:47
< 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; } }
< 결과 화면 >
'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