Không thể gọi getSupportFragmentManager () từ hoạt động


79

Tôi có một hoạt động có một phần nhỏ.

XML:

 <fragment android:name="com.example.androidcalculator.ResultFragment"
            android:id="@+id/result_fragment"
            android:layout_weight="1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />

Và tôi muốn gọi một phương thức từ ResultFragment từ một phương thức trong Activity, nhưng getSupportFragmentManager "không tồn tại":

FragmentManager fragMan = getSupportFragmentManager();

Làm cách nào để giải quyết vấn đề này?

Câu trả lời:


189

Hoạt động của bạn không mở rộng FragmentActivity khỏi thư viện hỗ trợ, do đó, phương thức này không có trong lớp cha

Nếu bạn đang nhắm mục tiêu api 11 trở lên, bạn có thể sử dụng Activity.getFragmentManager để thay thế.


11
FragmentManagerhiện không được dùng nữa.
CoolMind

Không hoàn toàn đúng, bạn phải sử dụng AndroidX FragmentManager.
ueen

1
Tôi đang sử dụng ComponentActivity đây không AppcompactActivity và trong componentActivity getsupportManger () được đưa ra anyiIdea lỗi
Sunil Chaudhary

56

mở rộng lớp học AppCompatActivitythay vìActivity


18

nhận hoạt động hiện tại từ cha mẹ, sau đó sử dụng mã này

getActivity().getSupportFragmentManager()

cũng có thể thử FragmentManager fragMan = getFragmentManager ();
MrPickles

4

nhập khẩu

import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;

20
Nhập không đủ ở đây - bạn cũng phải kế thừa từ FragmentActivityđó.
Alexander Farber

4

Chỉ cần sử dụng

 FragmentManager fm = getActivity().getSupportFragmentManager();

Luôn nhớ rằng khi truy cập làm phồng phân đoạn trong MainLayout, hãy sử dụng Truyền hoặc getActivity().



2

Điều này đã làm việc cho tôi. Chạy Android API 19 trở lên.

FragmentManager fragMan = getFragmentManager();


0

Thay vì

extends Fragment

sử dụng

extends android.support.v4.app.Fragment 

Điều này làm việc cho tôi. cho * API14 trở lên


-1

Tôi đã sử dụng FragmentActivity

TabAdapter = new TabPagerAdapter(((FragmentActivity) getActivity()).getSupportFragmentManager());
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.