2017-07-12 4 views
0

(Ich benutze Kotlin) Also hier ist meine OnCreateView im Fragment.Fragment: RelativeLayout Sichtbarkeit nicht änderbar in 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 
    } 

und hier ist die xml des relativelayout:

<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> 

mangelt es in einer anderen Funktion zu verwenden, aber dies:

BotDiv2.visibility = View.VISIBLE 

Ursachen NPE Ich habe auch versucht findViewById zu verwenden , aber das verursacht auch eine NPE (oder nicht beeinflussen, cuz von Kotlins "?").

+1

Ursache Ihre ID ist 'android: id = "@ + id/BotDiv1"' 'nicht BotDiv2' –

+0

Sie benötigen BitDiv2 mit findViewById() intitialize, wird BotDiv2 nicht auf magische Weise initialisiert, wie in wpf. –

+0

@Peter Bruins mit 'kotlin-android-extensions' muss' findViewById' nicht finden –

Antwort

2

Anders als die ID scheinbar nicht richtig zu sein, wie oben in einem Kommentar erwähnt ...

in diesem Stadium Da Ihr View nicht für Ihre Fragment noch gesetzt ist (Sie haben es nicht an den Rahmen zurück) Sie nicht findViewById auf dem Fragment nennen kann selbst, aber Sie können einen findViewById Anruf auf dem neu aufgeblasen View stattdessen machen:

val view: View = inflater!!.inflate(R.layout.fragment_bots, container, false) 
val bd2 = view.findViewById(R.id.BotDiv2) 
bd2.visibility = View.VISIBLE 

Wenn Sie Kotlin Android Extensions verwenden, können Sie das gleiche mit dieser Syntax tun :

val view: View = inflater!!.inflate(R.layout.fragment_bots, container, false) 
view.BotDiv2.visibility = View.VISIBLE 
Verwandte Themen