BÀI 12: Fragment(Part2) Bài tập sử dụng Fragment Tạo Project có tên " AndroidFragment" Chuẩn bị file ảnh, chẳng hạn andrea.jpg Copy paste file andrea.jpg vào thư mục mipmap project Android Studio bắt bạn chọn chất lượng ảnh tạo Chọn mipmap-mdpi ảnh với chất lượng trung bình Tiếp theo tạo file activity_top.xml: Trên Android Studio chọn: File/New/Layout resource file Nhập vào: File name: activity_top.xml Root element: RelativeLayout Directory name: layout Tương tự tạo file activity_bottom.xml Thiết kế giao diện activity_top.xml activity_top.xml Thiết kế giao diện activity_bottom.xml TopFragment java package org.o7planning.androidfragment; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; public class TopFragment extends Fragment { @Nullable @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Đọc file xml tạo đối tượng View // inflate(@LayoutRes int resource, @Nullable ViewGroup root, boolean attachToRoot) View view= inflater.inflate(R.layout.activity_top, container, false); return view; } } BottomFragment.java package org.o7planning.androidfragment; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; public class BottomFragment extends Fragment { @Nullable @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Đọc file xml tạo đối tượng View // inflate(@LayoutRes int resource, @Nullable ViewGroup root, boolean attachToRoot) View view= inflater.inflate(R.layout.activity_bottom, container, false); return view; } } Và bây giờ, bạn cần bố trí fragment giao diện Activity Mở file activity_main.xml Chọn TopFragment: Thay đổi ID cho fragment top_fragment bottom_fragment activity_main.xml Bây bạn cần phải sửa đổi code class MainActivity, TopFragment, BottomFragment để sử lý kiện MainActivity.java package org.o7planning.androidfragment; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void showText(String topImageText, String bottomImageText) { BottomFragment bottomFragment = (BottomFragment) this.getSupportFragmentManager() findFragmentById(R.id.bottom_fragment); bottomFragment.showText(topImageText, bottomImageText); } } TopFragment.java package org.o7planning.androidfragment; import android.content.Context; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.EditText; public class TopFragment extends Fragment { private EditText inputTopImageText; private EditText inputBottomImageText; private MainActivity mainActivity; @Nullable @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Đọc file xml tạo đối tượng View // inflate(@LayoutRes int resource, @Nullable ViewGroup root, boolean attachToRoot) View view = inflater.inflate(R.layout.activity_top, container, false); inputTopImageText = (EditText) view.findViewById(R.id.input_top_image_text); inputBottomImageText = (EditText) view.findViewById(R.id.input_bottom_image_text); Button applyButton = (Button) view.findViewById(R.id.button_apply); applyButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { applyText(); } }); return view; } // Phương thức gọi sau Fragment ghép vào Activity @Override public void onAttach(Context context) { super.onAttach(context); if (context instanceof MainActivity) { this.mainActivity = (MainActivity) context; } } private void applyText() { String topText = this.inputTopImageText.getText().toString(); String bottomText = this.inputBottomImageText.getText().toString(); this.mainActivity.showText(topText, bottomText); } } BottomFragment.java package org.o7planning.androidfragment; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; public class BottomFragment extends Fragment { private TextView topText; private TextView bottomText; @Nullable @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Đọc file xml tạo đối tượng View // inflate(@LayoutRes int resource, @Nullable ViewGroup root, boolean attachToRoot) View view = inflater.inflate(R.layout.activity_bottom, container, false); topText = (TextView) view.findViewById(R.id.top_image_text); bottomText = (TextView) view.findViewById(R.id.bottom_image_text); return view; } public void showText(String topImageText, String bottomImageText) { topText.setText(topImageText); bottomText.setText(bottomImageText); } } Chạy ứng dụng: