对话框不显示,屏幕仅使屏幕光线变暗



我目前正在创建一个自定义对话框来显示从 00:00 到 23:59 的小时数,我正在使用 kotlin 作为开发语言。我的问题是,当我打开对话框时,屏幕变暗并且没有显示任何内容,我认为我已经完成了所有正确的步骤。没有显示任何错误,但是在我将'?'放入recyclerViewCalendar?[日历对话框类]之前,它为变量提供了空错误。这是我的代码

"日历"对话框类

class CalendarDialog : DialogFragment() {
/**
* Define variables
*/
private val mDaysList : MutableList<Days> = ArrayList()
private val dayMonthYear = "2018-06-14" //TODO fetch the date of today
/**
* Initialize the adapter
*/
private val adapter = CalendarAdapter(mDaysList)
/**
* Initialize the layout manager
*/
private fun getLinearLayoutManager(): LinearLayoutManager {
return LinearLayoutManager(activity, LinearLayoutManager.HORIZONTAL, false)
}
private fun initView() {
setDataListItems()
recyclerViewCalendar?.adapter = adapter
recyclerViewCalendar?.layoutManager = getLinearLayoutManager()
recyclerViewCalendar?.setHasFixedSize(true)
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
val rootView = inflater.inflate(R.layout.calendar_dialog, container)
initView()
return rootView
}

/**
* TODO dependendo do horário da clinica bloqueio e desbloqueio horários
*/
private fun setDataListItems() {
mDaysList.add(Days("06:00", dayMonthYear))
mDaysList.add(Days("06:30", dayMonthYear))
mDaysList.add(Days("07:00", dayMonthYear))
mDaysList.add(Days("07:30", dayMonthYear))
mDaysList.add(Days("08:00", dayMonthYear))
mDaysList.add(Days("08:30", dayMonthYear))
mDaysList.add(Days("09:00", dayMonthYear))
mDaysList.add(Days("09:30", dayMonthYear))
mDaysList.add(Days("10:00", dayMonthYear))
mDaysList.add(Days("10:30", dayMonthYear))
mDaysList.add(Days("11:00", dayMonthYear))
mDaysList.add(Days("11:30", dayMonthYear))
mDaysList.add(Days("12:00", dayMonthYear))
mDaysList.add(Days("12:30", dayMonthYear))
mDaysList.add(Days("13:00", dayMonthYear))
mDaysList.add(Days("13:30", dayMonthYear))
mDaysList.add(Days("14:00", dayMonthYear))
mDaysList.add(Days("14:30", dayMonthYear))
mDaysList.add(Days("15:00", dayMonthYear))
mDaysList.add(Days("15:30", dayMonthYear))
mDaysList.add(Days("16:00", dayMonthYear))
mDaysList.add(Days("16:30", dayMonthYear))
mDaysList.add(Days("17:00", dayMonthYear))
mDaysList.add(Days("17:30", dayMonthYear))
mDaysList.add(Days("18:00", dayMonthYear))
mDaysList.add(Days("18:30", dayMonthYear))
mDaysList.add(Days("19:00", dayMonthYear))
mDaysList.add(Days("19:30", dayMonthYear))
mDaysList.add(Days("20:00", dayMonthYear))
mDaysList.add(Days("20:30", dayMonthYear))
}
}

项目.xml

<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="16dp"
android:paddingRight="16dp">
<android.support.design.widget.TextInputLayout
android:id="@+id/client_id_input_layout"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
app:layout_constraintBottom_toTopOf="@+id/guideline"
android:layout_marginRight="8dp"
app:layout_constraintRight_toRightOf="parent"
android:layout_marginLeft="8dp"
app:layout_constraintLeft_toLeftOf="parent">
<TextView
android:id="@+id/hourOfDay"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fontFamily="monospace"
android:gravity="center"
android:text="00:00"
android:textColor="@color/picker_default_selected_text_color"
android:textSize="36sp"
android:textStyle="bold" />
</android.support.design.widget.TextInputLayout>

<android.support.constraint.Guideline
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/guideline"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.5"/>
<TextView
android:id="@+id/day_month_year"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:text="22 Agosto 2018"
android:textStyle="bold|italic"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/guideline" />
</android.support.constraint.ConstraintLayout>

模型类

data class Days(var hourOfDay:String ,var dayMonthYear:String)

日历对话框布局 xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#f4f2f2"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerViewCalendar"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</android.support.constraint.ConstraintLayout>

片段类(我调用对话框的位置(

class BlockSchedulesFragment : BaseFragment<BlockSchedulesViewModel>() {

/**
* Call this fragment in the parent activity
*/
companion object {
fun  newInstance() = BlockSchedulesFragment()
}

/**
* Base fragment methods
*/
override fun layoutToInflate() = R.layout.fragment_block_shedules_screen
override fun definedViewModel() = ViewModelProviders.of(this, Injection.provideViewModelBlockerFactory(context))
.get(BlockSchedulesViewModel::class.java)
override fun doOnCreated(savedInstanceState: Bundle?) {
//I do the call to the dialog here
val fm = fragmentManager
val tv = CalendarDialog()
open_calendar_btn.setOnClickListener {
tv.show(fm,"TV_tag")
}
confirm_block.setOnClickListener {
Toast.makeText(activity,"Bloqueio efectuado",Toast.LENGTH_SHORT).show()
}
}
}

"日历"对话框布局 xml中,您使用了ConstraintLayout但未正确使用RecyclerView元素中的约束。

以下是正确的实现

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#f4f2f2"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerViewCalendar"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"/>
</android.support.constraint.ConstraintLayout>

此外,在"日历对话框"类中,传递falseattachToParent字段中的。

override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
val rootView = inflater.inflate(R.layout.calendar_dialog, container, false)
initView()
return rootView
}

这应该有效。如果没有,请告诉我。

最新更新