Кнопки моего introSlider не работают, почему это происходит - вопрос обновлен - PullRequest
0 голосов
/ 01 мая 2020

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

Однако у меня есть ошибка, и приложение даже не открывается.

Вот код:

Class Intro

class Intro : AppCompatActivity(), View.OnClickListener {

    lateinit var mPager : ViewPager
    var layouts : IntArray = intArrayOf(R.layout.first_slide,R.layout.second_slide,R.layout.third_slide)
    lateinit var dotsLayout : LinearLayout
    lateinit var dots: Array<ImageView>
    lateinit var mAdapter : PageAdapter

    lateinit var btnNext: Button
    lateinit var btnSkip: Button

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_intro)
        if(PrefManager(this).checkPreferences()){goToHomePage()}
        if(Build.VERSION.SDK_INT >=19)
        {
            window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)
        }else{
            window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)
        }

        mPager=findViewById(R.id.pager)
        mAdapter= PageAdapter(layouts,this)
        mPager.adapter= mAdapter
        dotsLayout = findViewById(R.id.dots)
        btnNext = findViewById(R.id.btnNext)
        btnSkip=findViewById(R.id.btnSkip)

        btnSkip.setOnClickListener { this }
        btnNext.setOnClickListener { this }



        createDots(0)
        mPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener{
            override fun onPageScrollStateChanged(state: Int) {

            }

            override fun onPageScrolled(
                position: Int,
                positionOffset: Float,
                positionOffsetPixels: Int
            ) {

            }

            override fun onPageSelected(position: Int) {
                createDots(position)

                if(position == layouts.size){
                    btnNext.setText("DONE")
                    btnSkip.visibility=View.INVISIBLE
                }else{
                    btnNext.setText("NEXT")
                    btnSkip.visibility=View.VISIBLE
                }
            }
        })

    }

    fun createDots(position:Int){
        if(dotsLayout!=null){
            dotsLayout.removeAllViews()
        }
        dots = Array(layouts.size,{i -> ImageView(this)})
        for(i in 0..layouts.size -1) {
            dots[i] = ImageView(this)
            if (i == position) {
                dots[i].setImageDrawable(ContextCompat.getDrawable(this, R.drawable.active_dots))
            } else {
                dots[i].setImageDrawable(ContextCompat.getDrawable(this, R.drawable.inactive_dots))
            }
            var params: LinearLayout.LayoutParams = LinearLayout.LayoutParams(
                ViewGroup.LayoutParams.WRAP_CONTENT,
                ViewGroup.LayoutParams.WRAP_CONTENT
            )
            params.setMargins(4,0,4,0)
            dotsLayout.addView(dots[i],params)



        }
    }

    override fun onClick(v: View?) {
        when(v!!.id){
            R.id.btnSkip ->{
                goToHomePage()
                PrefManager(this).writeSharedPreferences()
            }
            R.id.btnNext ->{
                loadNextSlide()
            }
        }

    }

    private fun goToHomePage() {
        startActivity(Intent(this, HomePage::class.java))
        finish()
    }
    private fun loadNextSlide() {
        var nextSlide: Int = mPager.currentItem+1
        if(nextSlide<layouts.size){
            mPager.setCurrentItem(nextSlide)
        }
        else{
            goToHomePage()
            PrefManager(this).writeSharedPreferences()
        }
    }
}

Class PrefManager

class PrefManager {
     lateinit var context : Context
      lateinit var pref: SharedPreferences

    constructor(context: Context) {
        this.context = context
        getSharedPreferences()
    }
    private fun getSharedPreferences(){
        pref = context.getSharedPreferences(context.getString(R.string.pref_name), Context.MODE_PRIVATE)

    }
    fun writeSharedPreferences(){
        var editor : SharedPreferences.Editor=pref.edit()
        editor.putString(context.getString(R.string.pref_key),"NEXT")
        editor.commit()
    }

    fun checkPreferences() : Boolean
    {
        var status: Boolean  = false
        status = !pref.getString(context.getString(R.string.pref_key),null).equals("null")
        return status
    }

    fun clearPreferences(){
        pref.edit().clear().commit()
        context.startActivity(Intent(context, HomePage::class.java))
        (context as AppCompatActivity).finish()
    }
}

Приложение работает, но кнопки следующего и пропуска не реагируют при нажатии. Почему это происходит?

Обновление: я изменил кое-что излишнее в коде и раскомментировал ту часть, которую я ранее прокомментировал, и у меня больше нет ошибки. Но кнопки все еще не работают

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...