안드로이드 프래그먼트 - 2
2020. 7. 12. 16:07ㆍ공부 정리/안드로이드
<activity_main.xml>
<fragment
android:id="@+id/mainFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:name="org.techtown.fragment.MainFragment" />
메인 액티비티에서 fragment 클래스를 추가합니다.
<fragment_main.xml>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="메뉴 화면으로"
android:id="@+id/button1" />
fragment.xml에서 버튼을 추가합니다.
<MainFragment.java>
public class MainFragment extends Fragment {
...
Button button = (Button) rootView.findViewById(R.id.button1);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MainActivity activity = (MainActivity) getActivity();
activity.onFragmentChanged(0);
}
});
...
fragment에서 추가한 버튼에 클릭 리스너로 연결합니다.
버튼이 눌렸을 때 메인 액티비티 객체를 참조한 후 메인 액티비티에서 정의한 onFragmentChanged() 메소드를 실행합니다.
<MainActivity.java>
public class MainActivity extends AppCompatActivity {
MainFragment mainFragment;
MenuFragment menuFragment;
...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mainFragment = (MainFragment) getSupportFragmentManager().findFragmentById(R.id.mainFragment);
menuFragment = new MenuFragment();
}
...
public void onFragmentChanged(int index) {
if (index == 0) {
getSupportFragmentManager().beginTransaction().replace(R.id.container, menuFragment).commit();
//액티비티에 추가된 후 프래그먼트로 동작
} else if (index == 1) {
getSupportFragmentManager().beginTransaction().replace(R.id.container, mainFragment).commit();
}
}
메인 프래그먼트를 id를 통해서 찾아야 하는데 프래그먼트가 view가 아니라서 프래그먼트를 관리하는 fragmentmanager() 객체의 findFragmentById를 통해 찾아야 합니다.
메인 액티비티에서 FragmentManager 객체의 replace() 메서드를 통해 두 프래그먼트를 바꾸는 코드입니다.
출처
|
https://github.com/mike-jung/DoItAndroid
'공부 정리 > 안드로이드' 카테고리의 다른 글
안드로이드 fragment replace (0) | 2020.07.12 |
---|---|
안드로이드 FragmentManager (0) | 2020.07.12 |
안드로이드 프래그먼트 - 1 (0) | 2020.07.12 |
안드로이드 인터넷 연결상태 확인 getNetworkCapabilities (0) | 2020.07.08 |
안드로이드 네트워크 보안 구성 - http연결 (0) | 2020.07.08 |