это мой макет -> fragment_three.xml
<ScrollView
xmlns:app = "http://schemas.android.com/apk/res-auto"
xmlns:android = "http://schemas.android.com/apk/res/android"
xmlns:tools = "http://schemas.android.com/tools"
android:layout_width = "match_parent"
android:layout_height = "match_parent"
android:background = "@drawable/supportback">
<LinearLayout
android:layout_width = "match_parent"
android:layout_height = "wrap_content"
android:orientation = "vertical">
//some Textviews here...
<Button
android:id = "@+id/sendButton"
android:layout_width = "58dp"
android:layout_height = "51dp"
android:layout_gravity = "right"
android:layout_marginLeft = "20dp"
android:layout_marginRight = "20dp"
android:clickable = "true"
android:background = "@drawable/send_email"/>
</LinearLayout>
</ScrollView>
а это мой фрагмент:
class fragmentC : Fragment() {
companion object {
fun newInstance():Fragment {
var fb :fragmentC = fragmentC()
return fb
}}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
val rootView = inflater.inflate(R.layout.fragment_three,container,false)
val btn = rootView.findViewById(R.id.sendButton) as Button
btn.setOnClickListener {
Toast.makeText(context,"test",Toast.LENGTH_LONG).show()
}
return rootView
}}
нет ошибок, нет исключений, ничего плохого в logcat. Я пока не смог найти проблему, пожалуйста, помогите?
edit1
это макет, в котором должен работать фрагмент:
<?xml version = "1.0" encoding = "utf-8"?>
<RelativeLayout xmlns:android = "http://schemas.android.com/apk/res/android"
android:layout_width = "match_parent"
android:layout_height = "match_parent"
xmlns:tools = "http://schemas.android.com/tools"
xmlns:app = "http://schemas.android.com/apk/res-auto"
tools:context = ".MainActivity"
android:id = "@+id/activity_main">
<FrameLayout
android:id = "@+id/frame_layout"
android:layout_width = "match_parent"
android:layout_height = "match_parent"
android:layout_above = "@+id/navigation"
android:animateLayoutChanges = "true">
</FrameLayout>
<android.support.design.widget.BottomNavigationView
android:id = "@+id/navigation"
android:layout_width = "match_parent"
android:layout_height = "wrap_content"
android:layout_alignParentBottom = "true"
android:background = "#389486"
app:menu = "@menu/bottom_view">
</android.support.design.widget.BottomNavigationView>
</RelativeLayout>
P.S: есть два других фрагмента, но сейчас он пустой, я его еще не трогал
edit2 основной вид деятельности
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
navigation.setOnNavigationItemSelectedListener (object : BottomNavigationView.OnNavigationItemSelectedListener{
override fun onNavigationItemSelected(item: MenuItem): Boolean {
when(item.itemId){
R.id.bot_list ->{
drawerLayout.openDrawer(Gravity.START)
}
R.id.bot_home ->{
var ft : FragmentTransaction = supportFragmentManager.beginTransaction()
ft.replace(R.id.frame_layout,fragmentA.newInstance())
ft.commit()
}
R.id.bot_cart ->{
var ft : FragmentTransaction = supportFragmentManager.beginTransaction()
ft.replace(R.id.frame_layout,fragmentB.newInstance())
ft.commit() }
R.id.bot_message ->{
//here is the required fragment
var ft : FragmentTransaction = supportFragmentManager.beginTransaction()
ft.replace(R.id.frame_layout,fragmentC.newInstance())
ft.commit() }
}
return true
}
})
var ft : FragmentTransaction = supportFragmentManager.beginTransaction()
ft.replace(R.id.frame_layout,fragmentA.newInstance())
ft.commit()
}
}
Я не знаю, что вызвало проблему, но изменение кода, как показано ниже, решает ее
class fragmentC : Fragment(),View.OnClickListener {
companion object {
fun newInstance():Fragment {
var fb :fragmentC = fragmentC()
return fb
}
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
val rootView = inflater.inflate(R.layout.fragment_three, container, false)
val location: Button = rootView.findViewById(R.id.sendButton)
location.setOnClickListener(this)
return rootView
}
override fun onClick(v: View) {
Toast.makeText(context,"test",Toast.LENGTH_LONG).show()
}
}