我对Android编程非常陌生,我正试图通过制作一个小应用程序来学习使用HorizontalSayrollView内部的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();
}
}
可以采取哪些措施来解决这个问题?