Hiện tại tôi đã có một thùng chứa "RELATIVE_LAYOUT" mà tôi đang sử dụng để thêm đoạn của tôi. Tôi đang sử dụng OnClickListener trên một nút để tải bố cục XML phân đoạn vào vùng chứa RelativeLayout.Làm cách nào để thêm/xóa Phân đoạn khi nhấp vào Nút?
Điều tôi muốn đạt được là khi tôi nhấn nút một lần, phân đoạn sẽ tải ... và khi tôi nhấn lại lần nữa, mảnh cần được loại bỏ. Tôi đã thử sử dụng số nguyên để xác định xem phân đoạn có được tải hay không, nhưng không thành công. Bất kỳ trợ giúp đánh giá cao ...
Mã sản phẩm:
public class MainActivity extends Activity {
Button B1,B2;
int boolb1=0, boolb2=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
B1 = (Button)findViewById(R.id.btn1);
B2 = (Button)findViewById(R.id.btn2);
B1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
FragmentManager fm = getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
FragmentOne f1 = new FragmentOne();
if(boolb1==0)
{ft.add(R.id.frg1, f1);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
boolb1=1;}
else
{ft.remove(f1);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_CLOSE);
boolb1=0;}
//ft.addToBackStack("f1");
ft.commit();
}
});
B2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
FragmentManager fm = getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
FragmentTwo f2 = new FragmentTwo();
if(boolb2==0) {
ft.add(R.id.frg2, f2);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
boolb2=1;
} else {
ft.remove(f2);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_CLOSE);
boolb2=0;
}
//ft.addToBackStack("f2");
ft.commit();
}
});
}
Vâng, tôi sẽ chỉ thêm rằng cách tiếp cận tốt hơn là để loại bỏ hoàn toàn "bổ sung" biến và chỉ quyết định bởi presention của mảnh vỡ trong quản lý mảnh .. trong trường hợp đó bạn sẽ có ít công việc khôi phục trạng thái sau khi xoay màn hình – Billda
Bạn nói đúng, tôi đã điều chỉnh mã :) –
Câu trả lời xuất sắc ... mặc dù vậy, khi lần đầu tiên tôi nhấn nút, java sẽ tạo một đối tượng FragmentOne f1 và chuyển cho nó giá trị được trả về bởi findFragmentByTag, nhưng thẻ "tag" chưa được liên kết với bất kỳ đoạn nào kể từ khi chúng ta làm điều đó trong khối if. Vì vậy, không nên tạo ra một lỗi ??? – Abhi9