【问题标题】:How to send data from dialog to my activity kotlin?如何将数据从对话框发送到我的活动 kotlin?
【发布时间】:2019-05-13 06:04:18
【问题描述】:

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

【问题讨论】:

  • 您能展示一下您是如何尝试将数据从对话框传递到活动的吗?
  • @HarshadPrajapati,我尝试通过意图传递数据,你传递数据是什么意思?
  • 您在对话框中调用 onDialogClickListener 的位置。我想你想念它
  • @Radesh 你是对的..
  • @Radesh,我只使用了意图,我想我错过了 onDialogClickListener 的用法,但我无法想象在哪里插入它,我认为实现将允许使用它,但正如我所见错了:(

标签: android kotlin


【解决方案1】:

试试这个

在您的活动中实现您的界面。

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

【讨论】:

  • 所以我必须在 onClickListener 处只使用两行,而无需使用意图?
  • @AndrewGoroshko 是的,我使用接口将数据传递给活动,而不是使用意图
  • 谢谢你的帮助,如果你点赞我会很高兴:)
猜你喜欢
  • 2017-02-05
  • 1970-01-01
  • 1970-01-01
  • 2018-07-14
  • 1970-01-01
  • 2021-03-02
  • 1970-01-01
  • 2013-07-28
  • 2017-03-03
相关资源
最近更新 更多