android 关于获取控件id的问题 代码如下:
<PreferenceCategoryandroid:title="背景设置"><Preferenceandroid:title="背景图片"android:summar...
<PreferenceCategory android:title="背景设置">
<Preference
android:title="背景图片"
android:summary="从相册中选取图片作为背景"
android:layout="@layout/preference_image"
android:key="bgimage" />
</PreferenceCategory>
这是setting.xml文件中的一段,其中preference_image.xml是我自定义的一个preference,代码如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/widget_frame"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:minHeight="?android:attr/listPreferredItemHeight"
android:gravity="center_vertical"
android:paddingRight="?android:attr/scrollbarSize">
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="0dip"
android:layout_marginRight="6dip"
android:layout_marginTop="6dip"
android:layout_marginBottom="6dip"
android:layout_weight="1">
<TextView android:id="@+android:id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"
android:textAppearance="?android:attr/textAppearanceLarge"
android:ellipsize="marquee"
android:fadingEdge="horizontal" />
<TextView android:id="@+android:id/summary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@android:id/title"
android:layout_alignLeft="@android:id/title"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="?android:attr/textColorSecondary"
android:maxLines="4" />
</RelativeLayout>
<ImageView
android:id="@+id/RightImage"
android:layout_width="54dip"
android:layout_height="54dip"
android:layout_marginRight="4dip"
android:layout_gravity="center_vertical"
android:focusable="false"
android:clickable="false"
android:background="#eeeeee"
android:padding="2dip"
android:src="@drawable/android"
/>
</LinearLayout>
现在的问题是,我在Setting.java中通过
addPreferencesFromResource(R.layout.setting);
语句调用了setting.xml,可是用
ImageView imageView = (ImageView) findViewById(R.id.RightImage);
缺取不到RightImage这个控件。。。
请教高手问题出在哪? 展开
<Preference
android:title="背景图片"
android:summary="从相册中选取图片作为背景"
android:layout="@layout/preference_image"
android:key="bgimage" />
</PreferenceCategory>
这是setting.xml文件中的一段,其中preference_image.xml是我自定义的一个preference,代码如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/widget_frame"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:minHeight="?android:attr/listPreferredItemHeight"
android:gravity="center_vertical"
android:paddingRight="?android:attr/scrollbarSize">
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="0dip"
android:layout_marginRight="6dip"
android:layout_marginTop="6dip"
android:layout_marginBottom="6dip"
android:layout_weight="1">
<TextView android:id="@+android:id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"
android:textAppearance="?android:attr/textAppearanceLarge"
android:ellipsize="marquee"
android:fadingEdge="horizontal" />
<TextView android:id="@+android:id/summary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@android:id/title"
android:layout_alignLeft="@android:id/title"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="?android:attr/textColorSecondary"
android:maxLines="4" />
</RelativeLayout>
<ImageView
android:id="@+id/RightImage"
android:layout_width="54dip"
android:layout_height="54dip"
android:layout_marginRight="4dip"
android:layout_gravity="center_vertical"
android:focusable="false"
android:clickable="false"
android:background="#eeeeee"
android:padding="2dip"
android:src="@drawable/android"
/>
</LinearLayout>
现在的问题是,我在Setting.java中通过
addPreferencesFromResource(R.layout.setting);
语句调用了setting.xml,可是用
ImageView imageView = (ImageView) findViewById(R.id.RightImage);
缺取不到RightImage这个控件。。。
请教高手问题出在哪? 展开
3个回答
展开全部
当然找不到了!因为现在你添加的是setting.xml,所以这个ImageView会默认在setting.xml里找,setting.xml里没有所以找不到;解决办法是你必须通过setting.xml把preference_image.xml加载(inflate)进来,如:
LayoutInflater inflater = getLayoutInflater();
View imageLayout = inflater.inflate(R.layout.preference_image.xml,null);然后
ImageView imageView = (ImageView) imageLayout.findViewById(R.id.RightImage);
这只是大致步骤,具体看你的程序
LayoutInflater inflater = getLayoutInflater();
View imageLayout = inflater.inflate(R.layout.preference_image.xml,null);然后
ImageView imageView = (ImageView) imageLayout.findViewById(R.id.RightImage);
这只是大致步骤,具体看你的程序
追问
那请问你说的这三个语句是加在onCreat函数中还是哪啊?onCreat函数貌似没有返回值啊,放在主函数里又要报错,我对imageView赋值是在另外一个函数里,好像还是没获取到。。
追答
我自己测试了下,如果只是简单的使用:
preference_image里面的控件点击是没效果的,必须重写preference才行,里面有onBindView()函数,不知道你具体怎么实现的
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
hawon1 说的靠谱
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
刷新一下工程试试,看看R.Java文件里有没有这个ID
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询