diff --git a/app-common/src/main/java/im/angry/openeuicc/ui/MainActivity.kt b/app-common/src/main/java/im/angry/openeuicc/ui/MainActivity.kt index 76a5229..e7943c5 100644 --- a/app-common/src/main/java/im/angry/openeuicc/ui/MainActivity.kt +++ b/app-common/src/main/java/im/angry/openeuicc/ui/MainActivity.kt @@ -57,21 +57,28 @@ open class MainActivity : AppCompatActivity() { override fun onCreateOptionsMenu(menu: Menu): Boolean { menuInflater.inflate(R.menu.activity_main, menu) - spinner = menu.findItem(R.id.spinner).actionView as Spinner - spinner.adapter = spinnerAdapter - spinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { - override fun onItemSelected( - parent: AdapterView<*>?, - view: View?, - position: Int, - id: Long - ) { - supportFragmentManager.beginTransaction().replace(R.id.fragment_root, fragments[position]).commit() - } + if (!this::spinner.isInitialized) { + spinner = menu.findItem(R.id.spinner).actionView as Spinner + spinner.adapter = spinnerAdapter + spinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { + override fun onItemSelected( + parent: AdapterView<*>?, + view: View?, + position: Int, + id: Long + ) { + supportFragmentManager.beginTransaction() + .replace(R.id.fragment_root, fragments[position]).commit() + } - override fun onNothingSelected(parent: AdapterView<*>?) { - } + override fun onNothingSelected(parent: AdapterView<*>?) { + } + } + } else { + // Fragments may cause this menu to be inflated multiple times. + // Simply reuse the action view in that case + menu.findItem(R.id.spinner).actionView = spinner } return true