Tôi chưa thử nghiệm điều này - điều đó sẽ tùy thuộc vào bạn, nhưng nó sẽ cung cấp cho bạn một ý tưởng chung về cách bạn có thể xử lý vấn đề của mình.
Có ba bước sau:
Bước đầu tiên
Chúng ta cần cái gì đó có thể xử lý cho phép/vô hiệu hóa hành động cho chúng ta. Với mục đích này, chúng tôi tạo ra các lớp sau đây:
public class TabItem {
private Tab tab;
private Fragment fragment;
private boolean enabled;
public TabItem(Tab tab, Fragment fragment) {
this.tab = tab;
this.fragment = fragment;
enabled = true;
}
public Tab getTab() {
return tab;
}
public Fragment getFragment() {
return fragment;
}
public void toggleEnabled() {
enabled = enabled ? false : true;
}
public boolean isEnabled() {
return enabled;
}
}
Thứ hai bước
Chúng ta cần một cái gì đó có thể chứa những TabItems
và một cách dễ dàng để truy cập chúng. Với mục đích này chúng ta thêm lớp sau đây:
public class TabHolder {
private HashMap<Integer, TabItem> tabs;
public TabHolder() {
tabs = new HashMap<Integer, TabItem>();
}
public void addTab(TabItem tab) {
tabs.put(tab.getTab().getPosition(), tab);
}
public TabItem getTab(int position) {
return tabs.get(position);
}
}
Thứ ba bước
Chúng ta cần phải xử lý việc lựa chọn Tabs
mình, vì vậy chúng ta cần phải tạo ra một tùy chỉnh TabListener
:
private class MyTabListener implements TabListener {
@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
//Do nothing - unless you want to do something.
}
@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
TabItem item = tabHolder.getTab(tab.getPosition());
if(item.isEnabled()) {
ft.remove(item.getFragment());
ft.commit();
}
}
@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
//Do nothing - unless you want to do something.
}
}
Cuối cùng
Hiện tại, chúng tôi có thể sử dụng khung được tạo của chúng tôi.Để làm như vậy, chúng ta cần một TabHolder
:
tabHolder = new TabHolder(); //Needs to be declared in the same class as our TabListener
Chúng ta cần phải thêm chúng tôi Tabs
này:
tabHolder.addTab(new TabItem(tab, fragmentForThisTab));
Và chúng ta cần phải thiết lập tùy chỉnh của chúng tôi TabListener
trên mỗi Tab
:
tab.setTabListener(new MyTabListener());
Bật/Tắt
Để bật hoặc tắt một Tab
chúng ta chỉ cần gọi:
tabHolder.getTab(position).toggleEnabled();
Hãy cho tôi biết làm thế nào nó đi :)
Đây không phải là điều tương tự .. tôi không muốn quay lại di chuyển sau đó thêm lại ... tôi sẽ chỉ làm cho nó bật/tắt ... tôi muốn rằng tab vẫn xuất hiện trong bố cục! Cảm ơn bạn đã asnwer của bạn – Babez21584
Tôi đã đăng một gợi ý trong một câu trả lời mới. Kiểm tra nó ra. – kaspermoerch