Ничего не происходит после запуска активности в Android с Kotlin - PullRequest
0 голосов
/ 27 сентября 2018

У меня очень странные проблемы с андроидным методом startActivity ().Новое действие не запускается после того, как я вызвал метод startActivity ().

Это мой код:

val ini = this
adapter.setOnDetailListener(object : DetailListener {
    override fun onDetail(key: String) {
        val destination = Intent(ini, DetailKontrakanActivity::class.java)

        Log.e("ANAK_KOST","onDetailKontrakan")


        destination.putExtra("KEY",key)

        ini.startActivity(destination)
    }
})

Это мой журнал:

2018-09-27 14:12:38.621 478-2366/? E/ANDR-PERF-MPCTL: Invalid profile no. 0, total profiles 0 only
2018-09-27 14:12:38.770 17514-17514/? E/ANAK_KOST: goToDetailKontrakan
2018-09-27 14:12:38.771 17514-17514/? E/ANAK_KOST: onDetailKontrakan
2018-09-27 14:12:38.771 17514-17514/? I/Timeline: Timeline: Activity_launch_request time:63333082
2018-09-27 14:12:38.776 1546-2979/? I/ActivityManager: START u0 {cmp=galihlprakoso.com.anakkostv3/.View.ReusableActivities.DetailKostActivity (has extras)} from uid 10391 on display 0
2018-09-27 14:12:38.784 1546-2979/? D/ActivityTrigger: ActivityTrigger activityPauseTrigger 
2018-09-27 14:12:38.789 17514-17514/? I/FIAM.Headless: Removing display event listener
2018-09-27 14:12:38.796 2703-2819/? I/WtProcessController: MOVE TO FOREGROUND: galihlprakoso.com.anakkostv3 10391
2018-09-27 14:12:38.796 2703-2819/? I/WtProcessController: FOREGROUND INFO: name=galihlprakoso.com.anakkostv3 uid=10391 pid=17514 TaskId:265
2018-09-27 14:12:38.797 1546-2979/? I/Timeline: Timeline: App_transition_ready time:63333108

Журнал «onDetailKontrakan» печатается в журнале, но метод startActivity () не вызывает новую операцию.

Я использовал этот код в некоторых фрагментахэто работает, но не работает в действии.

Это весь мой код класса адаптера:

class DataKostAdapter(var listKost: ArrayList<Kost>, private val activity: Context,private val tipe:Int) : RecyclerView.Adapter<DataKostAdapter.DataKostViewHolder>() {

    companion object {

        val CRUD = 0
        val NO_CRUD = 1

    }

    private var hapusListener:HapusListener? = null
    private var detailListener:DetailListener? = null
    private var backupListKost:ArrayList<Kost> = ArrayList()


    init{
        listKost.forEach { kost ->
            backupListKost.add(kost)
        }
    }


    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): DataKostViewHolder {
        val binding = DataBindingUtil.inflate<ItemRvDataKostBinding>(LayoutInflater.from(parent.context),
                        R.layout.item_rv_data_kost,parent,false)


        return DataKostViewHolder(binding)
    }

    override fun onBindViewHolder(holder: DataKostViewHolder, position: Int) {
        val kost = listKost[position]

        holder.binding.kost = kost
        holder.binding.adapter = this

        if (kost.gambar.length != 0) {
            Glide.with(activity).load(kost.gambar).into(holder.binding.itemRvDataKostImg)
        }

        holder.binding.itemRvDataKostWrapper
                .setOnClickListener(object : View.OnClickListener{
                    override fun onClick(p0: View?) {
                        goToDetailKost(kost)
                    }
                })

        if(tipe == NO_CRUD){
            holder.binding.itemRvDataKostEdit.visibility = View.GONE
            holder.binding.itemRvDataKostHapus.visibility = View.GONE
        }
    }

    override fun getItemCount(): Int {
        return listKost.size
    }

    fun goToEditKost(kost: Kost) {
        val intent = Intent(activity, FormKostActivity::class.java)

        intent.putExtra(FormKostActivity.TIPE_FORM,FormKostActivity.EDIT)
        intent.putExtra("KEY",kost.key)

        activity.startActivity(intent)
    }

    fun setOnHapusListener(hapusListener: HapusListener){
        this.hapusListener = hapusListener
    }

    fun setOnDetailListener(detailListener: DetailListener){
        this.detailListener = detailListener
    }

    fun hapusKost(kost: Kost){
        if(hapusListener!=null){
            hapusListener!!.onHapus(kost.key)
        }
    }

    fun goToDetailKost(kost: Kost) {

        Log.e("ANAK_KOST","goToDetailKost")

        if(detailListener!=null){
            detailListener!!.onDetail(kost.key)
        }
    }

    fun search(query:String){

        listKost.clear()

        if(query == "" || query.isEmpty()){

            backupListKost.forEach { kost ->
                listKost.add(kost)
            }

        }else{

            backupListKost.forEach { kost ->

                if(kost.nama.contains(query, ignoreCase = true)){

                    listKost.add(kost)
                }

            }
        }

        notifyDataSetChanged()
    }


    fun sortByHargaSewa(){

        val temp = ArrayList<Kost>()

        val length = listKost.size

        Log.e("ANAK_KOST","Length :"+length)

        if(length>1){
            while(true){

                var chosen = 0

                for(i in 0..listKost.size-1){

                    val kost = listKost.get(i)
                    val termurah = listKost.get(chosen)

                    if(kost.harga_sewa <= termurah.harga_sewa){
                        chosen = i
                    }

                }

                temp.add(listKost.get(chosen))
                listKost.removeAt(chosen)


                if(temp.size == length){
                    break
                }
            }

            listKost = temp
            notifyDataSetChanged()
        }

    }

    fun sortByRating(){

        val temp = ArrayList<Kost>()

        val length = listKost.size

        if(length>1){
            while(true){

                var chosen = 0

                for(i in 0..listKost.size-1){

                    val kost = listKost.get(i)
                    val terpopuler = listKost.get(chosen)

                    if(kost.rating <= terpopuler.rating){
                        chosen = i
                    }

                }

                temp.add(listKost.get(chosen))
                listKost.removeAt(chosen)

                if(temp.size==length){
                    break
                }

            }

            listKost = temp
            notifyDataSetChanged()
        }
    }





    inner class DataKostViewHolder(internal var binding: ItemRvDataKostBinding) : RecyclerView.ViewHolder(binding.root)

}

Ответы [ 4 ]

0 голосов
/ 27 сентября 2018

Я сталкивался с этой проблемой раньше.В моем случае звонящий Activity и пункт назначения Activity были одинаковыми.Я имею в виду, щелкнув по элементу RecyclerView в Activity X, я попытался запустить X. Проблема была в launchMode X в манифесте.Я определил это singleTask.Так что Activity не началось снова, и казалось, что ничего не произошло, когда startActivity позвонил.

Если у вас возникла такая ситуация, вы можете попробовать использовать onNewIntent, чтобы узнать, что Activity запущен снова или нет.

0 голосов
/ 27 сентября 2018

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

runOnUiThread {
    Log.e("ANAK_KOST","onDetailKontrakan")
    val destination = Intent(this@YourActivity.baseContext, YourActivity::class.java)
            .also { it.putExtra("KEY",key) } 
    startActivity(destination)
}
0 голосов
/ 27 сентября 2018

Распространенной проблемой является то, что действие сразу же завершается после его запуска, поэтому вы не увидите его появления.

0 голосов
/ 27 сентября 2018

Сделайте это:

val destination= Intent(baseContext,YourActivity::class.java)

Log.e("ANAK_KOST","onDetailKontrakan")

destination.putExtra("KEY",key)

baseContext.startActivity(destination)

В Java я использую вот так в Adapter:

Intent intent = new Intent(context, NextActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...