NullPointerException,findViewById返回null

时间:2014-06-06 10:13:50

标签: java android nullpointerexception findviewbyid

我对Android编程非常陌生,我正试图通过制作一个小应用程序来学习使用Horizo​​ntalSayrollView内部的LinearLayout以幻灯片方式显示一些图片。

我希望能够动态/编程地将图片添加到LinearLayout。 当使用findViewById找到我的LinearLayout时,似乎它返回null,之后当我将图像添加到布局时,我得到一个NullPointerException。

这是我的XML:

<HorizontalScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.xsiand.mtgdigitalbattlefield.MainActivity$PlaceholderFragment"
android:background="@color/purpleGray" >


     <LinearLayout
        android:id="@+id/gallery"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:orientation="horizontal">

        </LinearLayout>

    </HorizontalScrollView>

这是我的onCreate方法:

public Integer deck[] ={
        R.drawable.card1,
        R.drawable.card2,
        R.drawable.card3,
        R.drawable.card4,
        R.drawable.card5,
        R.drawable.card6,
        R.drawable.card7
};


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    getActionBar().hide();

    gallery = (LinearLayout) findViewById(R.id.gallery); // returns null when debugged.




   for(Integer card : deck)
   {    
        ImageView image = new ImageView(this);
        image.setImageResource(card);
        image.setAdjustViewBounds(true);
        gallery.addView(image);          //CRASHES HERE :'(

    }


    if (savedInstanceState == null) {
        getSupportFragmentManager().beginTransaction()
                .add(R.id.container, new PlaceholderFragment())
                .commit();
    }

}

可以采取哪些措施来解决这个问题?

0 个答案:

没有答案