2017-03-31 4 views
0

verweist Hallo, ich habe das folgende kodiert, um die Ansicht vom Include-Layout zu bekommen. Aber ich bekomme Nullzeigerausnahme. Wo ich falsch liege?Wie man eine Ansicht innerhalb des Includelayouts in android

Mein Java-Code:

View actionbar = findViewById(R.id.actionbar); 
       RelativeLayout actionRRl = (RelativeLayout)actionbar.findViewById(R.id.actionRR); 
       actionRRl.setEnabled(false); 
       actionRRl.setClickable(false); 

In meinem Activity.xml,

<include 
      android:id="@+id/actionbar" 
      layout="@layout/actionbar" /> 

-Layout, die enthalten ist, dh actionbar.xml

<?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="wrap_content" 
     android:background="@drawable/header" 
     android:focusable="false" 
     android:focusableInTouchMode="false" 
     android:clickable="false" 
     android:id="@+id/actionRR" 
     android:orientation="vertical"> 

     <ImageView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentLeft="true" 
      android:clickable="false" 
      android:padding="@dimen/logo_size" 
      android:src="@drawable/logo" /> 

    </RelativeLayout> 

Fehler-Stack.

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.view.View.setEnabled(boolean)' on a null object reference 

Antwort

1

Geben ID zu Ihrem enthalten Layout wie unten zu bekommen:

<include android:id="@+id/actionbar" 

überschreibt Ihre Eltern-ID in Ihrem eingeschlossenen Layout.

In Ihrem Fall sollten Sie den Code zu diesem Wechsel das Problem beheben:

View actionbar = findViewById(R.id.actionbar); 
actionbar.setEnabled(false); 
actionbar.setClickable(false); 
0

Sobald Sie die Symbolleiste Layout Ihrer Tätigkeit umfassen, deren Komponenten gehören auch zu Ihrer Tätigkeit, so dass Sie sie direkt

RelativeLayout actionRRl = (RelativeLayout) findViewById(R.id.actionRR); 
actionRRl.setEnabled(false); 
actionRRl.setClickable(false); 
+0

Versucht Ihr Code: Sein Wurffehler Kumpel! Verursacht von: java.lang.NullPointerException: Versuch, die virtuelle Methode 'void android.widget.RelativeLayout.setEnabled (boolean)' bei einem Nullobjekt-Verweis aufzurufen –

+0

Bitte stellen Sie sicher, dass Sie den Aufruf nach dem 'setContentView()' durchführen –

0

versuchen diese

RelativeLayout actionRRl = (RelativeLayout)findViewById(R.id.actionRR); 
       actionbar.setEnabled(false); 
       actionbar.setClickable(false); 

Sie können instanziiert auch das Layout aufblasen eine Ansicht und machen es so,

View actionbar = LayoutInflater.from(this).inflate(R.layout.actionbar, null, false); 
RelativeLayout actionRRl = (RelativeLayout)actionbar.findViewById(R.id.actionRR); 
       actionRRl.setEnabled(false); 
       actionRRl.setClickable(false); 
+0

hi @Yordan, also was ist Actionbar hier? –

+0

Sie benötigen keine actionBar, es ist ein Verweis auf eine Layout-Ressource, keine Ansicht. – Yordan

Verwandte Themen