2017-01-03 43 views
-2

Hello ive創建了一個自定義視圖,它擴展了relativeLayout。我想讓它可以定製。NullPointerException當我使用我的自定義視圖

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); 
}} 

孤單是我的主要活動

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

}} 

和我的XML文件

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

它得到一個NullPointerException異常,但我不知道爲什麼我設置一個值luv_grow_view但它說這是一個空對象引用:/

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

首先'Niveauview luv_grow_view之前設定此

setContentView(R.layout.YourXMLfile name); 

=新Niveauview(getApplicationContext());'然後在下一行'luv_grow_view = (Niveauview)findViewById(R.id.luv_growup_view);' – GurV

+1

看起來你在實現中做了許多錯誤的事情,本教程描述了創建複合視圖非常好:https://code.tutsplus.com/tutorials/創建性化合物的看法上,機器人 - CMS-22889 – Egor

回答

0

其它顯示分辨率也許你沒有修改佈局。 重建應用程序並驗證它。

2

那是因爲你還沒有打電話給你initNiveauView()方法

相關問題