pass values to dialogs with parent reference instead of bundle
This commit is contained in:
parent
a914912b76
commit
7843848653
@ -9,18 +9,13 @@ import android.support.v4.app.DialogFragment
|
||||
|
||||
|
||||
class EndOfMatchDialog: DialogFragment() {
|
||||
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
|
||||
var names: Array<String> = arrayOf("", "")
|
||||
var winnerName = ""
|
||||
var score = IntArray(2)
|
||||
override fun onCreateDialog(savedInstanceState: Bundle?)=
|
||||
AlertDialog.Builder(activity).apply{
|
||||
val players = (activity as MainActivity).players
|
||||
val names = players.map { it.name }.toTypedArray()
|
||||
val winnerName = players.maxBy { it.score }?.name ?: ""
|
||||
val score = players.map { it.score }.sortedDescending().toIntArray()
|
||||
|
||||
arguments?.apply {
|
||||
names = getStringArray("names")
|
||||
winnerName = getString("winnerName")
|
||||
score = getIntArray("score")
|
||||
}
|
||||
|
||||
return AlertDialog.Builder(activity).apply{
|
||||
setTitle(getString(R.string.end_match_dialog_title, winnerName))
|
||||
setMessage(getString(R.string.score, score[0], score[1]))
|
||||
setPositiveButton(
|
||||
@ -31,7 +26,6 @@ class EndOfMatchDialog: DialogFragment() {
|
||||
putExtra("names", names)
|
||||
}
|
||||
)
|
||||
//activity?.finish()
|
||||
}
|
||||
)
|
||||
setNeutralButton(
|
||||
@ -62,12 +56,5 @@ class EndOfMatchDialog: DialogFragment() {
|
||||
startActivity(newMatchIntent)
|
||||
}
|
||||
)
|
||||
/*setNegativeButton(
|
||||
R.string.quit_button,
|
||||
DialogInterface.OnClickListener { dialog, id ->
|
||||
activity?.finish()
|
||||
}
|
||||
)*/
|
||||
}.create()
|
||||
}
|
||||
}
|
@ -15,7 +15,7 @@ import android.view.MenuItem
|
||||
import android.widget.ImageView
|
||||
|
||||
|
||||
class MainActivity : AppCompatActivity(), StarterNameDialog.StarterNameDialogListener{
|
||||
class MainActivity : AppCompatActivity() {
|
||||
var players: Array<Player> = emptyArray()
|
||||
var serviceSide: Side = Side.LEFT
|
||||
var relaunchSide: Side = Side.RIGHT
|
||||
@ -54,7 +54,7 @@ class MainActivity : AppCompatActivity(), StarterNameDialog.StarterNameDialogLis
|
||||
findViewById(R.id.imgRightService)
|
||||
)
|
||||
updateUI()
|
||||
openStarterNameDialog()
|
||||
StarterNameDialog().show( supportFragmentManager, "StarterNameDialog")
|
||||
}
|
||||
|
||||
override fun onCreateOptionsMenu(menu: Menu): Boolean {
|
||||
@ -124,16 +124,7 @@ class MainActivity : AppCompatActivity(), StarterNameDialog.StarterNameDialogLis
|
||||
updateUI()
|
||||
}
|
||||
|
||||
fun openStarterNameDialog() {
|
||||
StarterNameDialog().apply {
|
||||
arguments = Bundle().apply {
|
||||
putStringArray("names", players.map{ it.name }.toTypedArray())
|
||||
}
|
||||
show( supportFragmentManager, "StarterNameDialog")
|
||||
}
|
||||
}
|
||||
|
||||
override fun setStarterName(serviceSide: Side, names: Collection<String>) {
|
||||
fun setStarterName(serviceSide: Side, names: Collection<String>) {
|
||||
players.zip(names).forEach { (player, name) -> player.name = name}
|
||||
this.serviceSide = serviceSide
|
||||
relaunchSide = when(serviceSide) {
|
||||
@ -184,7 +175,7 @@ class MainActivity : AppCompatActivity(), StarterNameDialog.StarterNameDialogLis
|
||||
updateUI()
|
||||
}
|
||||
if ( matchIsFinished() ) {
|
||||
openEndOfMatchDialog()
|
||||
EndOfMatchDialog().show(supportFragmentManager,"EndOfMatchDialog")
|
||||
}
|
||||
}
|
||||
|
||||
@ -192,15 +183,4 @@ class MainActivity : AppCompatActivity(), StarterNameDialog.StarterNameDialogLis
|
||||
val (minScore, maxScore) = players.map { it.score }.sorted()
|
||||
return (maxScore >= 11) and (maxScore - minScore >= 2)
|
||||
}
|
||||
|
||||
fun openEndOfMatchDialog() {
|
||||
EndOfMatchDialog().apply {
|
||||
arguments = Bundle().apply {
|
||||
putStringArray("names", players.map{ it.name }.toTypedArray())
|
||||
putString("winnerName", players.maxBy { it.score }?.name)
|
||||
putIntArray("score", players.map{ it.score }.sortedDescending().toIntArray())
|
||||
}
|
||||
show(supportFragmentManager,"EndOfMatchDialog")
|
||||
}
|
||||
}
|
||||
}
|
@ -14,48 +14,31 @@ import android.widget.TextView
|
||||
|
||||
|
||||
class StarterNameDialog : DialogFragment() {
|
||||
interface StarterNameDialogListener {
|
||||
fun setStarterName(serviceSide: Side, names: Collection<String>)
|
||||
}
|
||||
|
||||
var mainActivity: StarterNameDialogListener? = null
|
||||
|
||||
override fun onAttach(activity: Activity?) {
|
||||
super.onAttach(activity)
|
||||
try {
|
||||
mainActivity = activity as StarterNameDialogListener
|
||||
} catch (e: ClassCastException) {
|
||||
throw ClassCastException(activity!!.toString() + " must implement StarterNameDialogListener")
|
||||
}
|
||||
}
|
||||
|
||||
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
|
||||
override fun onCreateDialog(savedInstanceState: Bundle?) =
|
||||
AlertDialog.Builder(activity).apply {
|
||||
val mainActivity = activity as MainActivity
|
||||
val inflater:LayoutInflater = context?.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
|
||||
val namesView: View = inflater.inflate(R.layout.starter_name_dialog, null)
|
||||
val inputsPlayersNames: Array<EditText?> = arrayOf(
|
||||
namesView.findViewById(R.id.inputLeftPlayerName),
|
||||
namesView.findViewById(R.id.inputRightPlayerName)
|
||||
)
|
||||
arguments?.getStringArray("names")?.apply{
|
||||
zip(inputsPlayersNames).forEach {
|
||||
(name, inputPlayerName) -> inputPlayerName?.setText(name, TextView.BufferType.EDITABLE)
|
||||
}
|
||||
|
||||
inputsPlayersNames.zip(mainActivity.players.map{ it.name }).forEach { (inputPlayerName, name) ->
|
||||
inputPlayerName?.setText(name, TextView.BufferType.EDITABLE)
|
||||
}
|
||||
|
||||
return AlertDialog.Builder(activity).apply {
|
||||
setTitle(R.string.starter_name_dialog_message)
|
||||
setView(namesView)
|
||||
setPositiveButton(R.string.go_button) { dialog, id ->
|
||||
mainActivity?.setStarterName(
|
||||
dismiss()
|
||||
mainActivity.setStarterName(
|
||||
when (namesView.findViewById<RadioGroup>(R.id.radioGroup)?.checkedRadioButtonId) {
|
||||
R.id.radioLeftPlayer -> Side.LEFT
|
||||
else -> Side.RIGHT
|
||||
},
|
||||
inputsPlayersNames.map{ it?.text.toString() }
|
||||
)
|
||||
dismiss()
|
||||
}
|
||||
//setNegativeButton(R.string.quit_button) { dialog, id -> activity?.finish() }
|
||||
}.create()
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user