android - 当类中未使用静态关键字时,什么会生成“无法从静态上下文引用”?
问题描述
我收到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");
}
}
.
.
.
}
但是,关键字“static”从未在任何地方的类中使用。
我正在关注使用getSupportFragmentManager()的 API 。我曾使用getFragmentManager但被告知android.app.Fragment
是deprecated 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 的指令并得到一个我不理解的错误。不使用“静态”关键字时会产生什么错误?
解决方案
getSupportFragmentManager()
您在类 ( ) 上调用实例方法 ( FragmentActivity
),而不是在实例上。“静态上下文”是FragmentActivity
.
要FragmentManager
为您获取一个,请Fragment
尝试getParentFragmentManager()
:
FragmentManager fm = getParentFragmentManager();
如果这似乎不存在,那么您使用的是旧版本的 AndroidX 库,在该方法存在之前。在这种情况下,使用getFragmentManager()
:
FragmentManager fm = getFragmentManager();
推荐阅读
- html - 使用角度的移动设备上的横向模式网站?
- r - 合并ggplot2图形时如何尊重比率大小
- reactjs - 在 Next.js 中禁用开发时缓存
- css - 如何使用 Dart Sass 在选择器中导入外部文件
- angular - 如何插入可拖动和可调整大小的输入文本框和图像
- function - 没有固定标准的 MAXIFS
- node.js - 如何在 swagger 表单数据字段中传递字符串数组
- scala - `sbt run` 添加依赖后编译时出错
- drools - LHS 清空列表触发规则
- npm - 来自 security-wg git repo json 文件的漏洞数据与来自注册表 apis 的漏洞数据之间的关系