Tôi có một ListFragment trong MainActivity của tôi. Đây là cách tôi đặt đối tượng mảnh của mình.Có cách nào để lấy phân đoạn từ trên cùng của ngăn xếp không?
FragmentManager fragmentManager = activity.getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
Fragment newFragment = new MyFragment();
fragmentTransaction.replace(R.id.framecontainer, newFragment, "tag");
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
Vấn đề là khi báo chí sử dụng lại nút, tôi phải, ít nhất, thay đổi thanh tác vụ và trình đơn bằng cách gọi
getActionBar().setTitle(title);
getActionBar().setDisplayHomeAsUpEnabled(isEnabled);
invalidateOptionsMenu();
tôi phải biết những loại mảnh được hiện đang hiển thị , để tôi biết cách đặt thanh hành động. Tôi lưu trữ các tùy chọn thiết lập trong phân đoạn như các đối số.
String title = fragment.getArguments().getString("KEY_TITLE");
boolean isEnabled = fragment.getArguments().getBoolean("KEY_ISENABLED");
tôi làm tìm kiếm các câu hỏi có liên quan, và tôi nhận ra rằng tôi có thể nhận được các mảnh vỡ bằng cách gọi
MyFragment fragment = (MyFragment) getSupportFragmentManager()
.findFragmentByTag("tag");
Tuy nhiên, tôi phải lưu trữ tất cả các từ khóa trong một ngăn xếp tùy chỉnh, và gọi pop () mọi lúc khi người dùng nhấn nút quay lại trong onBackPressed()
.
Vì vậy, câu hỏi của tôi là có cách nào để tôi có được phân đoạn hiển thị hiện tại từ ngăn xếp trực tiếp không?
Lưu ý: Xin lưu ý rằng các loại phân đoạn khác nhau, không chỉ riêng MyFragment.
Có vẻ như rằng nếu tôi làm điều đó theo cách của bạn, tôi phải thiết * * fragmentTransaction.addToBackStack (tag) **; Nếu không, tôi sẽ nhận được một NullPointerException. Vì vậy, ** fragmentManager.getBackStackEntryAt (fragmentManager.getBackStackEntryCount() - 1) .getName(); ** không đề cập đến tên thẻ –
Yea ... bạn sẽ phải kiểm tra các giá trị rỗng và toán sai ((getBackStackEntryCount-1)> 0 và như vậy).Tôi đã viết điều này quá nhanh. Ngoài ra, các phân đoạn được thêm vào mà không có thẻ sẽ xuất hiện dưới dạng null. – petey
nó sẽ vẫn hoạt động nếu tôi sử dụng addToBackStack (null)? – umerk44