05.21 안드로이드 프레그먼트바

최고고·2022년 5월 21일
0

프래그먼트?

  • 프래그먼트는 하나의 액티비티가 여러 개의 화면을 가지도록 한다
  • 반드시 하나의 액티비티와 연결되어야함
  • 과거에는 레이아웃과 액티비티를 중첩해 사용하기 때문에 코드가 복잡했음
  • 부분화면을 줘 액티비티처럼 독립적 동작을 구성하는 것

프래그먼트 실습




이처럼 화면 하단에 세가지의 탭이 있음






메인액티비티자바

package com.example.ex220521;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.FragmentManager;

import android.os.Bundle;
import android.view.MenuItem;
import android.widget.Toast;

import com.google.android.material.bottomnavigation.BottomNavigationItemView;
import com.google.android.material.bottomnavigation.BottomNavigationView;

public class MainActivity extends AppCompatActivity {

    private BottomNavigationView navi;
    private  fragmentInfo info;
    private FragmentList list;
    private FragmentManager fm;  // fragment 객체 관리



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        info = new fragmentInfo();
        list = new FragmentList();


        fm = getSupportFragmentManager();

        navi = findViewById(R.id.navi);
        navi.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem item) {
                switch (item.getItemId()){
                    case R.id.info:
                        fm.beginTransaction().replace(R.id.frame, info).commit();
                        Toast.makeText(getApplicationContext(), "내정보", Toast.LENGTH_SHORT).show();
                        break;
                    case R.id.list:
                        Toast.makeText(getApplicationContext(), "친구목록보기", Toast.LENGTH_SHORT).show();
                        fm.beginTransaction().replace(R.id.frame,list).commit();
                        break;
                    case R.id.setting:
                        Toast.makeText(getApplicationContext(), "설정", Toast.LENGTH_SHORT).show();
                        break;
                }

                return false;
            }
        });

    }
}

info

package com.example.ex220521;

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 android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;

public class fragmentInfo extends Fragment {

    private Button btn_change;
    private TextView tv_nick, tv_age,tv_name;
    private EditText edt_nick;



    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

        View fragment = inflater.inflate(R.layout.info, container, false);
        btn_change = fragment.findViewById(R.id.btn_change);
        tv_nick = fragment.findViewById(R.id.tv_nick);
        tv_age = fragment.findViewById(R.id.tv_age);
        tv_name = fragment.findViewById(R.id.tv_name);
        edt_nick = fragment.findViewById(R.id.edt_nick);

        btn_change.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String nick = edt_nick.getText().toString();
                tv_nick.setText("닉네임 : " + nick);
            }
        });

        return fragment;
    }
}

list

package com.example.ex220521;

import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;

import java.util.ArrayList;
import java.util.zip.Inflater;

public class FragmentList extends Fragment {

    private ListView listView;
    private ArrayList<String> items = new ArrayList<String>();
    private ArrayAdapter<String> adapter;

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

        View fragment = inflater.inflate(R.layout.list, container, false);
        listView = fragment.findViewById(R.id.listView);
        items.add("1.피카츄");
        items.add("2.라이츄");
        items.add("3.파이리");
        items.add("4.꼬부기");
        items.add("5.버터풀");
        items.add("6.야도란");

        adapter = new ArrayAdapter<String>(getContext(), android.R.layout.simple_list_item_1,items);
        listView.setAdapter(adapter);
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                String value = (String) adapterView.getItemAtPosition(i);
                Log.v("myValue",value);
            }
        });

        return fragment;
    }
}

0개의 댓글