在Android中将片段显示为BottomSheet

时间:2019-08-29 11:05:19

标签: java android

在android最新版本中,引入了底部工作表的新功能,该功能允许将弹出窗口显示为底部工作表。例如,

mydata2

您可以将弹出窗口显示为底部工作表视图。

我的问题是我必须为应用程序功能编写很多代码,例如100-200行代码,但将这些代码保留在相同的活动或片段中会使我的代码难看且难以管理。有没有一种方法可以将这段代码提取到某些Fragment或其他活动中,以便所有与底部对话框相关的代码都保留在其自己的类中。

我没有在寻找任何Java hack。宁可使用android方法来做到这一点。

如何打开和关闭底表视图?

2 个答案:

答案 0 :(得分:2)

答案 1 :(得分:1)

正如Zafer Celaloglu所说的那样

kotlin
class MyDialogFragment : BottomSheetDialogFragment() {

    companion object {
        const val TAG = "FilterDialogFragment"

        fun newInstance() = FilterDialogFragment()
    }

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
        return inflater.inflate(R.layout.fragment_dialog_my_layout, container, false)
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
    }

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
    }
}

java
public class MyDialogFragment extends BottomSheetDialogFragment {

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment_dialog_my_layout, container, false)
    }

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
    }
}

并进行类似的活动

kotlin
MyDialogFragment.newInstance().show(supportFragmentManager,MyDialogFragment.TAG)

java
MyDialogFragment myDialogFragment = new MyDialogFragment();
myDialogFragment.show(getSupportFragmentManager(), "MyDialogFragment");