안드로이드 18일차

ParkJinYoung·2022년 11월 3일
0

Fragment

  • fragment끼리의 데이터전송
    SPF(SharedPreFerence) : 입력된 데이터값이 초기화 되지않음, 맵 형태 ex) 튜토리얼
    d

두더지잡기

public class Fragment_4 extends Fragment {


    private static final String ARG_PARAM1 = "param1";
    private static final String ARG_PARAM2 = "param2";


    private String mParam1;
    private String mParam2;

    public Fragment_4() {
        //생성자 메소드 : 리턴타입이없음, 클래스이름과 같음, 내용이 없어서 디폴트생성자
    }
    // static이 붙어있으면 객체 생성시 필드영역과 메서드영역이 있는데
    // Non-Static Area 가 아닌 Static 으로 선언시 따로 Static Area 에 생긴다.
    // 공용공간에 있어서 다른곳에서 영향을 받는다.
    // static 변수/메소드는 객체생성(new) 없이도 클래스이름.__ 로 접근가능
    // ex) R.id.btn => 주소접근

    // 외부(Activity) 에서 fragment 객체 생성하지 않아도 메소드 호출해서
    // 자체적으로 Fragment 만들어주는 메소드 (newInstance)
    public static Fragment_4 newInstance(String param1, String param2) {
        Fragment_4 fragment = new Fragment_4();
        Bundle args = new Bundle();
        args.putString(ARG_PARAM1, param1);
        args.putString(ARG_PARAM2, param2);
        fragment.setArguments(args);
        return fragment;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (getArguments() != null) {
            mParam1 = getArguments().getString(ARG_PARAM1);
            mParam2 = getArguments().getString(ARG_PARAM2);
        }
    }



    /// ✔✔✔✔✔ 밑에만있으면됨 위는 다지워도됨
    EditText edt_url;
    Button btn_ok;
    TextView tv_url;
    SharedPreferences spf;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Activity의 상위 클래스는 AppcompatActivity 클래스
        // Fragment의 상위 클래스는 Fragment
        // => findViewById 등의 Activity가 할수 있는 일들에 제한이 있다.

        // return 안에들어있으면 일회성이여서 변수로 만들어줘서 여러번사용가능하게한다.
        View view = inflater.inflate(R.layout.fragment_4, container, false);

        edt_url=view.findViewById(R.id.edt_url);
        btn_ok=view.findViewById(R.id.btn_ok);
        tv_url=view.findViewById(R.id.tv_url);
        // mSPF 라는 이름의 spf(테이블처럼) 가져옴
        // 있으면 있는거 가져와라
        // ("이름",Context.___)
        spf = getActivity().getSharedPreferences(MainActivity.SPF_TITLE, Context.MODE_PRIVATE);

        // 버튼눌렀을때 edt_url에 적힌 데이터 textView에 띄우기
        btn_ok.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //클릭하면 spf에 값 저장
                spf.edit().putString("url",edt_url.getText().toString()).commit();
                tv_url.setText(edt_url.getText().toString());
            }
        });

        return view;
    }
}

public class Fragment_3 extends Fragment {
    ImageView[] imgs = new ImageView[9];
    TextView tv_score;
    TextView tv_time;
    int[] OnOff= new int[]{R.drawable.on,R.drawable.off};

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_3, container, false);
        tv_score = view.findViewById(R.id.tv_score);
        tv_time = view.findViewById(R.id.tv_time);
        for(int i = 0;i<imgs.length;i++){
            int resId = getResources().getIdentifier("img_0"+(i+1),"id",
                    getActivity().getPackageName());
            imgs[i] = view.findViewById(resId);
            imgs[i].setImageResource(R.drawable.on);
        }

        return view;
    }
}
profile
꾸준히

0개의 댓글