当类中未使用static关键字时,将产生“无法从静态上下文中引用”的内容吗?

问题描述 投票:0回答:1

我收到以下代码的Non-static method 'getSupportFragmentManager()' cannot be referenced from static context错误:

import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentActivity;
.
.
.
public class MedicalInformationFragment extends Fragment implements FragmentNameProvider, ConfirmDialogFragment.ConfirmDialogListener{
.
.
.
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Log.d(TAG, "Entered: onCreate");
    first = true;
    if(getArguments() != null) {
        petId = getArguments().getInt(PET_ID_KEY);
        Log.d(TAG, "Pet ID is: " + petId);
        sMedicalInformationViewModel = ViewModelProviders.of(this).get(MedicalInformationViewModel.class);
        FragmentManager fm = FragmentActivity.getSupportFragmentManager();
        if(fm != null) {
            thisFragment = fm.findFragmentById(R.id.fragment_container);
            Log.d(TAG, "thisFragment is: " + thisFragment);
        }else{
            Log.d(TAG, "Error: fm == null");
        }
    }else{
        Log.d(TAG, "Error: getArguments() == null");
    }
}
.
.
.
}

但是,关键字“静态”从未在该类中的任何地方使用。

我正在使用getSupportFragmentManager()的API。我曾经使用过getFragmentManager,但被告知android.app.Fragmentdeprecated in API level 28.and to use the Support Library Fragment for consistent behavior across all devices and access to Lifecycle,但发现此package is part of the Android support library which is no longer maintained. The support library has been superseded by AndroidX which is part of Jetpack

所以,我在这里,遵循我认为是Android API的指令,并得到一个我不理解的错误。如果不使用'static'关键字,会产生什么错误?

android static androidx non-static
1个回答
0
投票

您正在类(getSupportFragmentManager())上而不是实例上调用实例方法(FragmentActivity)。 “静态上下文”为FragmentActivity

要获得FragmentManagerFragment,请尝试getParentFragmentManager()

FragmentManager fm = getParentFragmentManager();

如果该方法似乎不存在,则说明您使用的是AndroidX库的旧版本,而该方法尚未存在。在这种情况下,请使用getFragmentManager()

FragmentManager fm = getFragmentManager();
© www.soinside.com 2019 - 2024. All rights reserved.