Mat*_*ers 12 java android android-preferences android-layout android-actionbar

在我的应用程序中,我使用来自Google(位于<sdk>/samples/android-<version>/ActionBarCompat)的新动作栏兼容性示例,该示例效果很好.我唯一的问题就是将此应用于我PreferenceActivity,以获得类似Android Market中的设置的屏幕(见图片).
要填充ActionBar图标,每个图标都Activity必须扩展ActionBarActivity.问题是我Activity已经扩展PreferenceActivity并且在Java类中不能扩展多个类.
必须有一种方法来与... ActionBar一起PreferenceScreen.如果有人能为这个共同问题提供解决方案,我会很高兴.
PS:如何向PreferenceScreen添加按钮的解决方案不适合,因为ActionBar它实际上是标题栏,所以这更像是Java而不是布局.
pyk*_*yko 15
编辑:下面我的答案相当hacky,它似乎现在已经过时了(对于Android 3.0之前的版本)看看其他答案,以减少hacky和更新的解决方案~pyko 2014-09-01
我设法让它工作 - 不确定这是最好/最干净的解决方案,但它的工作原理.
不得不做出以下改变:
复制ActionBarActivity并扩展新类PreferenceActivity
public abstract class ActionBarPreferenceActivity extends PreferenceActivity {
// contents exactly the same as 'ActionBarActivity'
}
Run Code Online (Sandbox Code Playgroud)修改onCreate()中ActionBarHelperBase.java略有-使一个特例PreferenceActivity班
@Override
public void onCreate(Bundle savedInstanceState) {
// If the activity is a PreferenceActivity, don't make the request
if (!(mActivity instanceof PreferenceActivity)) {
mActivity.requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
}
Run Code Online (Sandbox Code Playgroud)让您的PreferenceActivity扩展此类并FEATURE_CUSTOM_TITLE 在调用之前添加请求super.onCreate()
public class MyPreferenceActivity extends ActionBarPreferenceActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); // add this line
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
// etc etc
}
// etc etc
}
Run Code Online (Sandbox Code Playgroud)据我所知,需要更改2和3,因为PreferenceActivity:
"只要调用super.onCreate(),就会设置ViewGroup,因此不允许更改Window的参数." (见奥利弗对答案的评论)
我想PreferenceActivity创建活动中组件的顺序与普通Activity活动不同.
如果您想尝试基于support-v4片段的PreferenceFragment实现:
https://github.com/kolavar/android-support-v4-preferencefragment
我自己使用它并且将PreferenceActivity转换为PreferenceFragment并没有多大工作.
| 归档时间: |
|
| 查看次数: |
23038 次 |
| 最近记录: |