android - 如何将数据从对话框发送到我的 Activity kotlin?

标签 android kotlin

我在我的应用程序对话框中将数据发送到主机 Activity 。在 Java 中,我必须从这个对话框中实现接口(interface),并且一切正常。在 Kotlin ,我看到我的听众无论如何都没有被调用。在我的对话框中,我有两个调用 Activity 类的按钮:

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 无论如何都没有使用 :( 然后我在托管 Activity 中实现了这个接口(interface):

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

而且它不起作用。这个乐趣没有被调用,我只捕获了 Intent 数据。在 Java 中它有效,我做错了什么?

最佳答案

试试这个

在您的 Activity 中实现您的界面。

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+"")
  }

}

如果您使用的是对话框 fragment ,而不只是这样做,则为 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
    }
}

关于android - 如何将数据从对话框发送到我的 Activity kotlin?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56106534/

相关文章:

android - Jetpack Compose pointerInput detectTapGestures 设置onLongPress超时?

android - 在 Android 和 iOS 上的 Unity 中录制屏幕视频的最佳方式?

android - ImageView 不拉伸(stretch)(Android)?

android - 如何清除URLSpan点击效果?

java - EXP4J : can't get a good factorial operator working

Hibernate Metamodel 注释处理器不识别 Kotlin 实体类

android - 使用 Kotlin : ClassNotFoundException 创建 AAR

Kotlin:将构造函数传递给函数式接口(interface)

android - Jetpack 撰写 : Textfield and FAB not using full width

android - RxJava - 链式调用