Tôi đã xem xét và tìm thấy một vài câu hỏi có chủ đề tương tự nhưng không có gì hữu ích trong trường hợp của tôi. Tôi đang cố gắng truy cập một đoạn hiện hoạt đang sử dụng getSupportFragmentManager(). FindFragmentByTag (TAG), nhưng nó luôn trả về null. Các câu trả lời trên các câu hỏi tương tự cho rằng phải mất một lúc để commit được thực hiện, do đó, gọi hàm findFragmentByTag sẽ trả về null nếu được gọi quá sớm. Tôi đã thử hai điều:Các mảnh Android - findFragmentByTag luôn trả về null
- thêm getSupportFragmentManager() executePendingTransactions()
ngay sau khi cam kết, nhưng vẫn nhận được rỗng.. - thêm nút ... nhấn nút này sau khi hoạt động đã được tạo, đoạn được đăng ký và chế độ xem được hiển thị nên để hệ thống đủ thời gian để cam kết. Nhưng tôi vẫn nhận được null.
Dưới đây là hoạt động của tôi:
public class MainActivity extends ActionBarActivity {
private static final String F_SETTINGS = "f_settings";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn = (Button) findViewById(R.id.btn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
debug();
}
});
if (savedInstanceState == null) {
FSettings newFragment = new FSettings();
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.container, newFragment);
ft.addToBackStack(F_SETTINGS);
ft.commit();
// getSupportFragmentManager().executePendingTransactions();
//// Activating this did not make any difference...
}
debug();
}
private void debug() {
String txt = "null";
Fragment frag = getSupportFragmentManager().findFragmentByTag(F_SETTINGS);
if (frag != null) {
txt = frag.toString();
}
Log.i("Testing", txt);
}
}
Tôi đang làm gì sai ở đây? Chúc mừng, Max
bạn có chắc chắn savedInstanceState là null không? – njzk2
ft.addToBackStack (F_SETTINGS); <--- điều này không gắn thẻ mảnh vỡ của bạn. – bofredo