我想從 dialogFragment 彈出視窗發送一個 editText 字串到它后面的活動螢屏。我不確定如何在 Kotlin 中執行此操作,因為大多數在線資源都使用 Java。我試圖實作:如何將資料從對話框發送到我的活動 kotlin?. 但是,我不能完全讓它作業,所以我不確定從這里使用什么方法。
這是 SelectAPScreen.kt (我希望字串轉到的活動)
package com.wcsng.dlocapp
import android.annotation.SuppressLint
import android.os.Build
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.ViewGroup
import android.widget.*
import androidx.annotation.RequiresApi
import androidx.lifecycle.LifecycleEventObserver
import androidx.navigation.findNavController
import com.android.volley.Request
import com.android.volley.Response
import com.android.volley.toolbox.StringRequest
import com.android.volley.toolbox.Volley
import kotlinx.android.synthetic.main.imu_data.*
import java.io.BufferedReader
import java.io.InputStreamReader
class SelectAPScreen : AppCompatActivity(), OnButtonClick {
@SuppressLint("ResourceAsColor")
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_select_apscreen)
val directoryName = findViewById<EditText>(R.id.dir_field)
val pingIP = findViewById<EditText>(R.id.ip_field)
val rpiIP = findViewById<EditText>(R.id.rpiField)
val qtnIPs = {}
val addQtn = findViewById<Button>(R.id.addQtn)
addQtn.setOnClickListener {
var dialog = AddQtnFragment()
dialog.show(supportFragmentManager, "Add Qtn Popup")
}
}
}
這是 DialogFragment 代碼:
package com.wcsng.dlocapp
import android.app.AlertDialog
import android.app.Dialog
import android.content.DialogInterface
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.EditText
import androidx.annotation.NonNull
import androidx.fragment.app.DialogFragment
import androidx.navigation.fragment.findNavController
import com.wcsng.dlocapp.R
class AddQtnFragment: DialogFragment() {
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
return activity?.let {
val builder = AlertDialog.Builder(it)
// Get the layout inflater
val inflater = requireActivity().layoutInflater
val qtn_ip = view?.findViewById<EditText>(R.id.qtn_ip)?.text.toString()
// Inflate and set the layout for the dialog
// Pass null as the parent view because its going in the dialog layout
builder.setView(inflater.inflate(R.layout.add_qtn_popup, null))
.setPositiveButton("Save", DialogInterface.OnClickListener{dialog, id ->
// TODO Return the qtn_ip to SelectAPScreen
// Close the dialog and return back to the parent activity
dialog.dismiss()
})
.setNegativeButton("Cancel", DialogInterface.OnClickListener{dialog, id ->
dialog.dismiss()
})
builder.create()
} ?: throw IllegalStateException("Activity cannot be null")
}
}
uj5u.com熱心網友回復:
您可以使用getActivity()orrequireActivity()方法來獲取管理Activity,然后您可以將其轉換為適當的類,例如(requireActivity() as SelectAPScreen),現在您可以呼叫它的方法
(requireActivity() as SelectAPScreen).selectAPScreenMethod()
selectAPScreenMethod()是放置在SelectAPScreen類中的自定義方法
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/405211.html
標籤:
上一篇:是否可以更改在ViewModel初始化期間啟動的協程的變數值
下一篇:嘗試在空物件參考上呼叫虛擬方法“voidandroid.widget.ListView.setAdapter(android.widget.ListAdapter)”:KOTLIN
