我正在尝试直接访问 fragment (android.support.v4) 中的按钮,这就是它抛出的内容:
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.View.findViewById(int)' on a null object reference
at
com.....fragments.HomeFragment._$_findCachedViewById(HomeFragment.kt)
at
com.....fragments.HomeFragment.onCreateView(HomeFragment.kt:25)
这是我试图在 fragment_home.xml 中访问的按钮:
<Button
android:id="@+id/batteryInstallationButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/battery_installation"
android:layout_weight="1"
android:textSize="12sp"
android:background="@drawable/custom_button"
android:textColor="@color/white"
android:layout_marginStart="5dp"
android:layout_marginEnd="5dp"/>
这是 HomeFragment.kt 中的 Kotlin 代码
import android.content.Context
import android.net.Uri
import android.os.Bundle
import android.support.v4.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Toast
import kotlinx.android.synthetic.main.fragment_home.*
class HomeFragment : Fragment() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
}
override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?,
savedInstanceState: Bundle?): View? {
val rootView = inflater!!.inflate(R.layout.fragment_home, container, false)
batteryInstallationButton?.setOnClickListener {
Toast.makeText(context, "ehere", Toast.LENGTH_SHORT).show();
}
return rootView
}
companion object {
fun newInstance(): HomeFragment {
val fragment = HomeFragment()
return fragment
}
}
}
有人知道为什么我不能直接访问按钮吗?
最佳答案
这里有两种选择:
从
onActivityCreated
访问batteryInstallationButton
,在该 View 中, View 将已经膨胀并会找到按钮。使用:
import kotlinx.android.synthetic.main.fragment_home.view.*
查看我添加到合成中的 .view
并直接从您已经膨胀的 View 中使用它:
val rootView = inflater!!.inflate(R.layout.fragment_home, container, false)
rootView.batteryInstallationButton?.setOnClickListener.....
如果这能解决您的问题,请告诉我。问候!
关于java - Kotlin直接访问android.support.v4.app.Fragment空对象引用中的Button,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34245895/