У меня есть «домашняя страница» в моем приложении, которая выглядит следующим образом
import android.os.Bundle
import android.support.v4.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import kotlinx.android.synthetic.main.activity_home.*
class HomeActivity: Fragment() {
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
val view: View = inflater.inflate(R.layout.activity_home, container, false)
return view
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
ButtonAddition.setOnClickListener{
}
}
}
У меня есть mainActivity, в котором есть следующий код
import android.os.Bundle
import android.support.design.widget.NavigationView
import android.support.v4.app.Fragment
import android.support.v4.view.GravityCompat
import android.support.v7.app.ActionBarDrawerToggle
import android.support.v7.app.AppCompatActivity
import android.view.MenuItem
import kotlinx.android.synthetic.main.activity_main.*
import kotlinx.android.synthetic.main.app_bar_main.*
class MainActivity : AppCompatActivity(), NavigationView.OnNavigationItemSelectedListener {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
setSupportActionBar(toolbar)
val toggle = ActionBarDrawerToggle(
this, drawer_layout, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close
)
drawer_layout.addDrawerListener(toggle)
toggle.syncState()
nav_view.setNavigationItemSelectedListener(this)
displayScreen(-1)
}
override fun onBackPressed() {
if (drawer_layout.isDrawerOpen(GravityCompat.START)) {
drawer_layout.closeDrawer(GravityCompat.START)
} else {
super.onBackPressed()
}
}
private fun displayScreen(id: Int) {
val fragment: Fragment = when (id) {
R.id.home -> {
HomeActivity()
}
R.id.record -> {
HomeActivity()
}
R.id.pro -> {
HomeActivity()
}
R.id.about -> {
HomeActivity()
}
else -> {
HomeActivity()
}
}
supportFragmentManager.beginTransaction()
.replace(R.id.relativelayout, fragment)
.commit()
}
override fun onNavigationItemSelected(item: MenuItem): Boolean {
displayScreen(item.itemId)
drawer_layout.closeDrawer(GravityCompat.START)
return true
}
}
У меня также естьфрагмент "AdditionSplash", на который я пытаюсь перейти, используя следующий код
import android.os.Bundle
import android.support.v4.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
class AdditionSplash: Fragment() {
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
val view: View = inflater.inflate(R.layout.activity_addition_splash, container, false)
return view
}
}
на фрагменте домашней страницы. У меня есть onclicklistener, и я хочу использовать его для переключения на фрагмент additionsplash
изФрагмент домашней страницы.(я не хочу использовать этот навигационный ящик, который у меня есть для этого) Я могу заставить это работать, если я изменю фрагмент дополнения-всплеска на действие и использую намерения, но я не могу переключиться на фрагмент из фрагмента.Это невозможно сделать?Я хочу использовать эту кнопку, чтобы просто перейти к другому фрагменту.
вот решение, которое я нашел, благодаря предложению
В основном задании, которое я сделал:
fun chooseActivity(view: View){
val buttonClicked = view as Button
val fragment: Fragment = when (buttonClicked.id) {
R.id.ButtonAddition -> {
AdditionSplash()
}
else -> {
HomeActivity()
}
}
supportFragmentManager.beginTransaction()
.replace(R.id.relativelayout, fragment)
.commit()
}