2017-06-27 2 views
0

Ich habe einen Button innerhalb eines Fragments. Die moneyBtn wird mit val button:Button? = view?.findViewById(R.id.moneyBtn) as Button? gefunden. Ich habe ? verwendet, weil die IDE Syntaxfehler werfen würde.Fragment Button onClickListener nicht ausgeführt

Die button ist jetzt mit seinen setOnClickListener:

button?.setOnClickListener { 
      moneyGetten() 
      mEditor.putInt("money", money++) 
      mEditor.commit() 
      moneyGetten() 
      Log.d("BUTTON CLICKED", "!") 
     } 

Meine Theorie: Die Ansicht wird aus irgendeinem Grunde nicht gefunden zu werden, so dass die findView mit einem null reagieren, die ? wird die OnClickListener „schützen“.

Hier ist meine XML:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="de.fosefx.clickergame.Generator"> 

    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

     <TextView 
      android:id="@+id/plus1label" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentTop="true" 
      android:layout_centerHorizontal="true" 
      android:layout_marginTop="135dp" 
      android:text="+1" 
      android:textAppearance="@style/TextAppearance.AppCompat.Display1" /> 

     <Button 
      android:id="@+id/moneyBtn" 
      style="@style/Widget.AppCompat.Button.Colored" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_centerHorizontal="true" 
      android:layout_marginTop="67dp" 
      android:text="CLICK ME" /> 
    </RelativeLayout> 
</FrameLayout> 
+2

Sie sollten Ihre Theorie mit dem Debugger testen. Oder sogar durch Protokollieren der Werte dieser Variablen. – zsmb13

+0

Versuchen Sie es als var und nicht als val. –

Antwort

0

Irgendwie ist der Ansicht, wurde nicht erklärt. Funktioniert jetzt. Ich werde diesen Fehler nie wieder machen.

Verwandte Themen