Bri*_*ian 3 java android android-fragments
在我的自定义视图中,我有一个运行简单游戏的Java类.当游戏结束时,我想显示我的DialogFragment,但getFragmentManager()方法似乎未定义.
FragmentManager manager = getFragmentManager();
Finish finish = new Finish();
finish.show(manager, "done");
Run Code Online (Sandbox Code Playgroud)
我试过让经理通过一个Fragmentobj:
Fragment fragment = new Fragment();
FragmentManager manager = fragment.getFragmentManager();
Run Code Online (Sandbox Code Playgroud)
但是返回为null.我知道这是一个新Fragment实例,但我不确定给它带来什么价值.任何帮助将非常感激.
小智 8
我使用这个简单的辅助方法:
fun getFragmentManager(context: Context?): FragmentManager? {
return when (context) {
is AppCompatActivity -> context.supportFragmentManager
is ContextThemeWrapper -> getFragmentManager(context.baseContext)
else -> null
}
}
Run Code Online (Sandbox Code Playgroud)
如果您的视图附加到一个Activity然后只是你可以做
((Activity)getContext()).getFragmentManager();
Run Code Online (Sandbox Code Playgroud)
要么
((ActivityCompat)getContext()).getSupportFragmentManager();
Run Code Online (Sandbox Code Playgroud)
为了更安全,请确保通过执行以下操作来检查View Contextis的实例Activity:
if(getContext() instanceof Activity)// do something
Run Code Online (Sandbox Code Playgroud)
而更好的解决方案是,我依赖于View和之间的回调Activity.
| 归档时间: |
|
| 查看次数: |
3072 次 |
| 最近记录: |