Как отправить данные из диалога в мою активность kotlin? - PullRequest
1 голос
/ 13 мая 2019

У меня в приложении диалог, который отправляет данные на хост активность. В Java мне пришлось реализовать интерфейс из этого диалога, и все работало нормально. В kotlin я увидел, что мой слушатель все равно не называется. В моем диалоге у меня есть две кнопки, которые вызывают класс активности:

okFilter.setOnClickListener(view1 -> {
            dismiss();
            Intent intent = new Intent(getContext(), HomeScreen.class);
            intent.putExtra("filter_data",data);
            intent.putExtra("id",4);
            startActivity(intent);
        });

и у меня также есть интерфейс:

public interface OnButtonClick {
        void onDialogClickListener(Integer job_type, HashMap<String, String> filter_data);
    }

, но onDialogClickListener все равно не используется :( Тогда я реализовал этот интерфейс на хостинге:

override fun onDialogClickListener(job_type: Int?, filter_data: java.util.HashMap<String, String>?) {

        bottom_navigation_t.selectedItemId = R.id.full_jobAgent
        val jobList = JobList()
        val bundle = Bundle()
        bundle.putInt("offset", 1)
        bundle.putSerializable("filter_data", data)
        jobList.arguments = bundle
        transaction.replace(R.id.contentContainerT, jobList).addToBackStack(null).commit()
    }

и это не работает. Это веселье не называется, и я ловлю только намеренные данные. В Java это сработало, что я не так сделал?

1 Ответ

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

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

Реализуйте ваш интерфейс в своей деятельности.

class MainActivity : AppCompatActivity(), OnButtonClick {

override fun onDialogClickListener(job_type: Int,filter_data: HashMap<String, String>) {
    Log.e("MainActivity ",job_type+"")
    Log.e("MainActivity ",filter_data+"")
  }

}

И если вы используете фрагмент диалога, чем просто сделать это дать контекст для объекта интерфейса вonAttach.

class CustomDialog: DialogFragment() {
     var listener: OnButtonClick ? = null

    override fun onAttach(context: Context) {
        super.onAttach(context)
        listener = context as OnButtonClick
    }

override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
        val view: View =
            activity!!.layoutInflater.inflate(R.layout.your_dialog_view, container, false)

        view.button!!.setOnClickListener {
            listener!!.onDialogClickListener(your_job_type, your_map)
        }
        return view
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...