button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
No1Fragment no1Fragment = new No1Fragment();
transaction.replace(R.id.frame, no1Fragment);
transaction.commit();
}
});
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
No2Fragment no2Fragment = new No2Fragment();
transaction.replace(R.id.frame, no2Fragment);
transaction.commit();
}
});
안녕하세요 열심히 코딩 공부하고 있는 코린이입니다... 프래그먼트 공부중인데
No1Fragment, No2Fragment 자바 클래스를 만들었고 두 개의 버튼을 누르면 각각 프래그먼트에 연결해서 화면에 출력하는 소스인데요
위의 코드처럼 하면 잘 실행이 됩니다.
근데 버튼 메소드 안에서 프래그먼트 인스턴스 만드는거 빼고 코드가 중복되는것 같아 간결하게 하고 싶어서
메소드 한개를 만들어 담을려구 합니다
button1.setOnClickListener(new View.OnClickListener() {
// private No1Fragment fragment1; // private Class fragment1;
// pirvate No2Fragment fragment2; // private Class fragment2;
@Override
public void onClick(View v) {
startFragment(fragment1);
}
});
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startFragment(fragment2);
}
});
public startFragment() {
}
제가 생각했던 방식이 이런 코드였는데요!
private No1Fragment fragment1;
No1Fragment 객체 그대로 선언을 하면
startFragment(No1Fragment a, No2Fragment b)
startFragment의 매개변수를 객체 그대로 받아야하니까
틀린 방식인 것 같구....
private Class fragment1;
Class타입의 인스턴스 객체로 선언을 하면
startFragment(Class getFragment)
이런식으로 한 개만 받을 수 있어서 좋지만
버튼 클릭에 따라 메소드 안에서 getFragment를 No1Fragment No2Fragment로 각각 지정하는건 무리가 있어보여서요...
잘모르겠습니다 선배님.... 선배님들의 지식을 저에게 좀만 빌려주세요 ㅠㅠ