У меня есть цепочка из 8 кнопок, которые я позиционировал как боковое меню, где справа находится контейнер с фрагментами.Нажатие на каждую кнопку открывает отдельный фрагмент.
Это делается с помощью прослушивателя onClick и оператора when.
Что я хочу сделать, так это то, что кроме изменения фрагмента в окне яхотите, чтобы фон для каждой кнопки изменялся при нажатии, и возвращался к значению по умолчанию при нажатии другой кнопки.Каков наилучший способ сделать это?
Могу ли я вызвать несколько действий для каждого случая в операторе when?Нужно ли для каждой нажатой кнопки устанавливать свой фон и фон для остальных 7?Кажется, слишком много кода.
class MainActivity : AppCompatActivity(), View.OnClickListener {
override fun onClick(v: View?) {
when (v?.id){
R.id.recipeOneButton -> createRecipeOne()
R.id.recipeTwoButton -> createRecipeTwo()
R.id.recipeThreeButton -> createRecipeThree()
R.id.recipeFourButton -> createRecipeFour()
R.id.recipeFiveButton -> createRecipeFive()
R.id.recipeSixButton -> createRecipeSix()
R.id.recipeSevenButton -> createRecipeSeven()
R.id.recipeEightButton -> createRecipeEight()
}
}
private val manager = this.supportFragmentManager!!
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
createRecipeOne()
val recipeOneButton : Button = findViewById(R.id.recipeOneButton)
val recipeTwoFragment : Button = findViewById(R.id.recipeTwoButton)
val recipeThreeButton : Button = findViewById(R.id.recipeThreeButton)
val recipeFourButton : Button = findViewById(R.id.recipeFourButton)
val recipeFiveButton : Button = findViewById(R.id.recipeFiveButton)
val recipeSixButton : Button = findViewById(R.id.recipeSixButton)
val recipeSevenButton: Button = findViewById(R.id.recipeSevenButton)
val recipeEightButton : Button = findViewById(R.id.recipeEightButton)
recipeOneButton.setOnClickListener(this)
recipeTwoFragment.setOnClickListener(this)
recipeThreeButton.setOnClickListener(this)
recipeFourButton.setOnClickListener(this)
recipeFiveButton.setOnClickListener(this)
recipeSixButton.setOnClickListener(this)
recipeSevenButton.setOnClickListener(this)
recipeEightButton.setOnClickListener(this)
}
fun createRecipeOne(){
val transaction = manager.beginTransaction()
val fragment = RecipeOne()
transaction.replace(R.id.fragmentHolder, fragment)
transaction.addToBackStack(null)
transaction.commit()
}
fun createRecipeTwo(){
val transaction = manager.beginTransaction()
val fragment = RecipeTwo()
transaction.replace(R.id.fragmentHolder, fragment)
transaction.addToBackStack(null)
transaction.commit()
}
fun createRecipeThree(){
val transaction = manager.beginTransaction()
val fragment = RecipeThree()
transaction.replace(R.id.fragmentHolder, fragment)
transaction.addToBackStack(null)
transaction.commit()
}
fun createRecipeFour(){
val transaction = manager.beginTransaction()
val fragment = RecipeFour()
transaction.replace(R.id.fragmentHolder, fragment)
transaction.addToBackStack(null)
transaction.commit()
}
fun createRecipeFive(){
val transaction = manager.beginTransaction()
val fragment = RecipeFive()
transaction.replace(R.id.fragmentHolder, fragment)
transaction.addToBackStack(null)
transaction.commit()
}
fun createRecipeSix(){
val transaction = manager.beginTransaction()
val fragment = RecipeSix()
transaction.replace(R.id.fragmentHolder, fragment)
transaction.addToBackStack(null)
transaction.commit()
}
fun createRecipeSeven(){
val transaction = manager.beginTransaction()
val fragment = RecipeSeven()
transaction.replace(R.id.fragmentHolder, fragment)
transaction.addToBackStack(null)
transaction.commit()
}
fun createRecipeEight(){
val transaction = manager.beginTransaction()
val fragment = RecipeEight()
transaction.replace(R.id.fragmentHolder, fragment)
transaction.addToBackStack(null)
transaction.commit()
}
}