preference自定义布局findViewById无法使用的问题
来源:互联网 发布:乐视手机4g网络设置 编辑:程序博客网 时间:2024/05/16 10:34
在preference中加入自定义,无法使用findViewById,编译会报错,估计很多同学跟我一样遇到过这个问题。
由于最近刚开发了一个客户需求,也遇到这样的问题,现在已经解决,我搜了下网上好像没有类似的文档,我就自己写个,希望对大家有所帮助。
1、首先自定义个继承preference的类Testpreference,然后在布局中调用:
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
android:title="@string/storage_settings_title" >
<PreferenceCategory
android:key="phone_ram_category"
android:title="@string/storage_settings_title" >
<com.android.settings.deviceinfo.Testpreference
android:key="text_key"
android:fragment="com.android.settings.deviceinfo.Memory"/>
</PreferenceCategory>
</PreferenceScreen>
2、Testpreference类的部分代码如下:
public class CpMemoryPreference extends Preference {
…… ……
public CpMemoryPreference(Context context, AttributeSet attrs) {
super(context, attrs); // 注:必须是2个参数的,否则会报错
mContext = context;
}
// 重点来了,复写onCreateView方法,就可以对自定义布局做各种操作啦
@Override
protected View onCreateView(ViewGroup parent) {
// TODO Auto-generated method stub
LayoutInflater inflater=(LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.test_linear_layout, null); // 加载自定义布局.test_linear_layout
mMaxTitle = (TextView)layout.findViewById(R.id.max_title); // 现在就findViewById 了
return layout;
}
…… ……
}
3、如何调用布局中的com.android.settings.deviceinfo.Memory呢,
在调用自定义布局的类中(一般是)
先找到key
mTest = (Testpreference)findPreference("text_key");
然后在 onPreferenceTreeClick方法中加入如下代码:
if(mTest == preference){
super.onPreferenceTreeClick(preferenceScreen, mTest);
return true; // 一定要return true,否则按键不起作用
}
当然如果要想按键做其他功能,在if(mTest == preference)判断中加入你想调用的功能即可。
OK,搞定!
- preference自定义布局findViewById无法使用的问题
- 自定义 Preference Header 布局
- 自定义布局的Dialog无法关闭问题
- Android给dialog使用自定义布局时,布局内容无法完全显示的问题
- 布局文件或控件存在却无法findViewById的解决办法
- 自定义Preference时遇到的问题
- Android中自定义Preference的使用
- 为 Fragment 的Preference 添加自定义的布局
- 通过findViewById无法找到自定义控件的解决办法
- Android中自定义布局无法在xml中使用的问题
- Android 自定义布局dialog使用(解决edittext无法弹出输入法的问题)
- 使用findViewById查找自定义view时返回NULL问题
- 122.xUtils使用inject取代findViewById的方法填充布局
- 关于无法保存Visual Studio自定义布局的问题
- Android 自定义控件布局 NullPointerException findViewById
- 通过自定义方法减少findViewById方法使用的次数
- android中布局文件中的控件通过findviewbyid无法关联的解决方法
- android 自定义preference的属性
- Solr搜索的排序打分规则探讨
- iOS应用崩溃日志揭秘
- 迪杰斯特拉算法
- 解决python使用urllib2不能随意修改HTTP method办法
- css对字符的操作小结
- preference自定义布局findViewById无法使用的问题
- 如何在 Dos 下运行 PHP 和 MySQL 命令
- 钱币兑换问题
- Flask框架:(一、安装)
- 常用表单数据的验证方法
- linux下vi命令大全
- Android UI设计之<六>使用HTML标签,实现在TextView中对部分文字进行加粗显示
- android ListView下拉刷新疯狂调用getView 解决办法
- PHP简单利用 token 防止表单重复提交