2017-01-03 9 views
-2

Hallo ive erstellt eine benutzerdefinierte Ansicht, die relativeLayout erweitert. Und ich möchte es anpassbar machen.NullPointerException, wenn ich meine benutzerdefinierte Ansicht verwende

public class Niveauview extends RelativeLayout { 

public TextView musiqueView = new TextView(getContext()), artisteView = new TextView(getContext()); 
public ImageView coverView = new ImageView(getContext()), carapaceView = new ImageView(getContext()); 

public Niveauview(Context context){ 
    super(context); 
} 

public void init(int cover, int musique,int artiste){ 

    coverView = (ImageView)findViewById(R.id.cover); 
    coverView.setImageResource(cover); 

    musiqueView = (TextView)findViewById(R.id.musique); 
    musiqueView.setText(musique); 


    artisteView = (TextView)findViewById(R.id.artiste); 
    artisteView.setText(artiste); 

    carapaceView = (ImageView) findViewById(R.id.carapace); 
    carapaceView.setImageResource(R.drawable.carapacevide); 
}} 

Theres ist meine Haupttätigkeit

public class MainActivity extends Activity { 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    initNiveauView(); 

} 

private void initNiveauView(){ 
    Niveauview luv_grow_view = new Niveauview(getApplicationContext()); 
    luv_grow_view = (Niveauview)findViewById(R.id.luv_growup_view); 
    luv_grow_view.init(R.drawable.luv_groweup,R.string.GrowUp,R.string.LilUziVert); 

}} 

und meine XML-Dateien

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/activity_main" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="vertical" 
tools:context="fr.freshkamekentrainement.skrt.MainActivity"> 
<ImageView 
    android:contentDescription="@string/header_content_description" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:src="@drawable/header" 
    android:id="@+id/header" 
    android:scaleType="fitStart" 
    /> 
<fr.freshkamekentrainement.skrt.view.NiveauView 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/luv_growup_view"/> 

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="@color/colorBackground" 
android:layout_margin="@dimen/niveau_view_elevation"> 
<ImageView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/cover"/> 
<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/musique"/> 
<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/artiste"/> 
<ImageView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/carapace"/> 

es wird eine Nullpointer, aber ich weiß nicht, warum ich Wert auf luv_grow_view aber sagen, dass ist ein Null-Objekt-Referenz:/

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void fr.freshkamekentrainement.skrt.view.Niveauview.init(int, int, int)' on a null object reference 
        at fr.freshkamekentrainement.skrt.MainActivity.initNiveauView(MainActivity.java:24) 
        at fr.freshkamekentrainement.skrt.MainActivity.onCreate(MainActivity.java:17) 
+0

Erste 'Niveauview luv_grow_view = new Niveauview (getApplicationContext()) aufrufen,' dann in der nächsten Zeile 'luv_grow_view = (Ebeneview) findViewById (R.id.luv_growup_view); ' – GurV

+1

Sieht aus, als ob Sie in Ihrer Implementierung einige Dinge falsch machen, dieses Tutorial beschreibt das Erstellen von zusammengesetzten Ansichten ziemlich gut: https://code.tutsplus.com/tutorials/ Erstellen-Compound-Ansichten-auf-Android - cms-22889 – Egor

Antwort

0

Vielleicht haben Sie nicht modifizierte Layouts für andere Anzeigeauflösung. App neu erstellen und überprüfen.

2

das ist, weil Sie diese

setContentView(R.layout.YourXMLfile name); 

nicht festgelegt haben, bevor Sie Ihren initNiveauView() -Methode

Verwandte Themen