我想玩android,所以我拿了一些现有的并修改了它。它是一个master-detail应用程序,使用默认设置在Eclipse中生成,没有新文件。我拿了位于com中的ItemDetailFragment.java的代码并对其进行了修改,以便在屏幕上绘制一些测试(0,0)
这是我修改过的代码
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_item_detail,
container, false);
//customImageView custom = (customImageView) inflater.inflate(R.layout.fragment_item_detail, container, false);
// Show the dummy content as text in a TextView.
if (mItem != null) {
//((ImageView) rootView.findViewById(R.id.item_detail_)).setImageResource(R.drawable.ic_launcher);
((customImageView) rootView.findViewById(R.id.item_detail__)).invalidate();
}
return rootView;
}
private class customImageView extends View {
/*To clarify I added this class myself b/c the android developer guide on Canvas and Drawables says to*/
public customImageView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
// TODO Auto-generated constructor stub
}
@Override
public void onDraw(Canvas canvas) {
canvas.drawText("Some Example Text", 0, 0, new Paint());
}
}
}
哦,这是我的/res/layout/fragment_item_detail.xml,带有声明
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/item_detail"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="16dp"
android:textIsSelectable="true" />
<!-- Autogenerated -->
<ImageView
android:id="@+id/item_detail_"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<!-- android:src="@drawable/android" /> -->
<!-- I added this in -->
<customImageView
android:id="@+id/item_detail__"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<!-- This is the relevant part, I added this in -->
</LinearLayout>
然而,当应用程序在模拟器上运行时,我得到this big list of errors
有人可以帮我理解为什么会这样,以及如何解决这个问题?
答案 0 :(得分:1)
这可能是因为您的View类是私有的,请尝试将其设置为public。此外,在XML上添加自定义视图时,您需要包含它的完整位置,因此如果它位于包com.pkg上的一个名为clazz的类中,则需要编写
<com.pkg.clazz.customImageView
... />