2017-01-03 33 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()方法

相关问题