Как исправить не найденные представления для контейнера id при добавлении фрагмента - PullRequest
0 голосов
/ 12 мая 2019

Я пытаюсь добавить свой фрагмент в стек.Поэтому при нажатии следующей кнопки фрагмент будет добавлен в стек.Но потом у меня возникла проблема, что идентификатор контейнера не найден.Вот мой код в следующей кнопке:

override fun onNextClicked(callback: StepperLayout.OnNextClickedCallback?) {
    val myFragment = MotorFragment()
    val fragmentManager = fragmentManager
    val fragmentTransaction = fragmentManager!!.beginTransaction()
    fragmentTransaction.add(R.id.container, myFragment)
    fragmentTransaction.addToBackStack("firstFrag")
    fragmentTransaction.commit()
    Toast.makeText(context,"firstFrag Added", Toast.LENGTH_SHORT).show()
    callback?.goToNextStep()


}

Я гуглю его, но ни одно из решений не работает для меня.Я пытаюсь изменить

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

}

на это:

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

}

и все еще получаю ту же ошибку.

А вот мой код создания:

 override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
    val v = inflater.inflate(R.layout.fragment_spk_motor, container, false)

    return v
}

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

}

Я ожидаю, что при нажатии следующей кнопки не будет принудительно закрываться и успешное добавление в стек.Помогите пожалуйста.

Мой полный код:

class MotorFragment : Fragment(), Step, BlockingStep {

var datareligion: ArrayList<MasterReligion?>? = null
lateinit var dataManager: DataManager

val myCalendar = Calendar.getInstance()

companion object {
    fun newInstance(): MotorFragment {
        return MotorFragment()
    }
}

override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
    val v = inflater.inflate(R.layout.fragment_spk_motor, container, false)

    return v
}

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

}

fun getReligion() {
    API.getreligion().enqueue(object : Callback<ArrayList<MasterReligion>> {

        override fun onResponse(call: Call<ArrayList<MasterReligion>>, response: Response<ArrayList<MasterReligion>>) {
            if (response.code() == 200) {
                datareligion = ArrayList()
                datareligion?.add(0, null)
                response.body()?.forEach { datareligion?.add(it) }
                val adapter = MyStepFragment.CustomAdapter<MasterReligion?>(activity, R.layout.spinner_custom, R.layout.spinner_dropdown_item, datareligion?.toTypedArray()!!)
                spnOTR.adapter = adapter
            }else{
                Toast.makeText(activity, "Error", Toast.LENGTH_LONG).show()
            }

        }

        override fun onFailure(call: Call<ArrayList<MasterReligion>>, throwable: Throwable) {
            Toast.makeText(activity, "Please check your connection", Toast.LENGTH_LONG).show()
        }
    })

    spnOTR?.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
        override fun onItemSelected(parentView: AdapterView<*>, selectedItemView: View?, position: Int, id: Long) {

            if (selectedItemView == null) {
                Toast.makeText(context, "Tipe harga jual tidak terpilih", Toast.LENGTH_SHORT).show()

            } else {
                val data = position
                val prefs = PreferenceManager.getDefaultSharedPreferences(activity!!.baseContext)  //context
                val prefEditor = prefs.edit()
                prefEditor.putInt("savedValue", data)
                prefEditor.apply()
            }
        }

        override fun onNothingSelected(parentView: AdapterView<*>) {
            Toast.makeText(context, "Nothing selected", Toast.LENGTH_SHORT).show()

        }
    }
}

override fun verifyStep(): VerificationError? {
    return null
}

override fun onSelected() {}

override fun onError(error: VerificationError) {}

override fun onBackClicked(callback: StepperLayout.OnBackClickedCallback?) {
    TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
}

override fun onCompleteClicked(callback: StepperLayout.OnCompleteClickedCallback?) {
    TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
}

override fun onNextClicked(callback: StepperLayout.OnNextClickedCallback?) {
    val myFragment = MotorFragment()
    val fragmentManager = fragmentManager
    val fragmentTransaction = fragmentManager!!.beginTransaction()
    fragmentTransaction.add(R.id.container, myFragment)
    fragmentTransaction.addToBackStack("firstFrag")
    fragmentTransaction.commit()
    Toast.makeText(context,"firstFrag Added", Toast.LENGTH_SHORT).show()
    callback?.goToNextStep()


}

}

1 Ответ

0 голосов
/ 13 мая 2019

Попробуйте это

  // Define framelayout in your activity xml , then try to add  
   fragment
  <FrameLayout     
    xmlns
  :android="http://schemas.android.com/apk/res/android
  android:layout_width="match_parent
  android:layout_height="match_parent
  android:id="@+id/container"/>
...