如何将数据从对话框发送到我的活动Kotlin



i在我的应用程序对话框中具有将数据发送到主机活动。在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中,我做错了什么?

尝试此

在活动中实现界面。

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
    }
}

最新更新