(我用Kotlin) 所以这是片段中的OnCreateView。
override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? {
val view: View = inflater!!.inflate(R.layout.fragment_bots, container, false)
BotDiv2.visibility = View.VISIBLE
startUp()
return view
}
,这是relativelayout的xml:
<RelativeLayout
android:id="@+id/BotDiv2"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="33.3"
android:visibility="invisible">
<ImageButton
android:id="@+id/BotBtn1"
android:layout_width="90dp"
android:layout_height="90dp"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:background="@null"
android:scaleType="fitCenter"
android:src="@android:drawable/btn_star_big_on" />
<TextView
android:id="@+id/uselessLevel1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/BotBtn1"
android:layout_alignStart="@+id/BotBtn1"
android:text="Level:" />
<TextView
android:id="@+id/BotWorth1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/BotBtn1"
android:layout_centerHorizontal="true"
android:text="$500"
android:textAppearance="@style/TextAppearance.AppCompat.Large" />
<TextView
android:id="@+id/levelBot1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/BotBtn1"
android:layout_alignEnd="@+id/BotBtn1"
android:text="1" />
</RelativeLayout>
想在另一个函数中使用它,但是这个:
BotDiv2.visibility = View.VISIBLE
导致NPE我也尝试使用findViewById,但这也会导致NPE(或者不影响,因为Kotlin的“?”)。
答案 0 :(得分:2)
除了上面的评论中提到的ID似乎不正确之外......
由于在此阶段您的View
尚未设置Fragment
(您尚未将其返回到框架中),因此您无法在{findViewById
上调用Fragment
1}}本身,但您可以对新增的findViewById
进行View
调用:
val view: View = inflater!!.inflate(R.layout.fragment_bots, container, false)
val bd2 = view.findViewById(R.id.BotDiv2)
bd2.visibility = View.VISIBLE
如果您正在使用Kotlin Android Extensions,您可以使用以下语法执行相同的操作:
val view: View = inflater!!.inflate(R.layout.fragment_bots, container, false)
view.BotDiv2.visibility = View.VISIBLE