使用我的自定义视图时出现NullPointerException

时间:2017-01-03 13:30:01

标签: java android view nullpointerexception null-pointer

Hello ive创建了一个扩展relativeLayout的自定义视图。我想让它可以自定义。

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是我的主要活动

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)

2 个答案:

答案 0 :(得分:2)

那是因为你没有设置这个

setContentView(R.layout.YourXMLfile name);

在调用initNiveauView()方法之前

答案 1 :(得分:0)

也许您还没有修改其他显示分辨率的布局。 重建应用并验证这一点。