- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
您好,我有一个扩展 ActionBarActivity
的 Activity 。这个有一个使用 PagerSlidingTabStrip
库的 ViewPager
。我正在使用 AppCompat v21,所以我需要扩展 ActionBarActivity 才能使用工具栏。顺便说一下.. 我有两个 PreferenceFragment 需要放在这个 viewpager 中。
import com.astuetz.PagerSlidingTabStrip;
import com.zst.app.multiwindowsidebar.preference.*;
import com.zst.app.multiwindowsidebar.sidebar.SidebarService;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.widget.Toolbar;
import android.transition.Explode;
import android.view.Menu;
import android.view.MenuItem;
import android.view.Window;
import android.annotation.SuppressLint;
import android.content.Intent;
//import android.support.v13.app.FragmentPagerAdapter;
public class MainActivity extends FragmentActivity {
public static final int MENU_TOGGLE = 1;
public enum PAGES {
MAIN(0),
APPEARENCE(1);
final int position;
PAGES(int pos) {
position = pos;
}
};
MyPagerAdapter mPageAdapter;
// Add
Toolbar toolbar;
public static PagerSlidingTabStrip tabs;
public ViewPager pager;
@SuppressLint("NewApi")
@Override
protected void onCreate(Bundle savedInstanceState) {
getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);
getWindow().setEnterTransition( new Explode() );
getWindow().setExitTransition( new Explode() );
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tabbed);
toolbar = (Toolbar) findViewById(R.id.toolbar);
mPageAdapter = new MyPagerAdapter(getSupportFragmentManager());
pager = (ViewPager)findViewById(R.id.pager);
tabs = (PagerSlidingTabStrip)findViewById(R.id.tabs);
pager.setAdapter(mPageAdapter);
tabs.setViewPager(pager);
pager.setOffscreenPageLimit(2);
mPageAdapter.notifyDataSetChanged();
pager.invalidate();
}
// My adapter
public class MyPagerAdapter extends FragmentPagerAdapter {
private final String[] TITLES = { "Home", "Interfaccia" };
public MyPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public CharSequence getPageTitle(int position) {
return TITLES[position];
}
@Override
public int getCount() {
return TITLES.length;
}
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return new MainPrefFragment();
case 1:
return new AppearencePrefFragment();
}
return null;
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(Menu.NONE, MENU_TOGGLE, 0, R.string.pref_toggle_service_title)
.setIcon(SidebarService.isRunning ?
R.drawable.ic_menu_toggle_off : R.drawable.ic_menu_toggle_on)
.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case MENU_TOGGLE:
if (SidebarService.isRunning) {
SidebarService.stopSidebar(this);
item.setIcon(R.drawable.ic_menu_toggle_on);
} else {
startService(new Intent(this, SidebarService.class));
item.setIcon(R.drawable.ic_menu_toggle_off);
}
}
return super.onOptionsItemSelected(item);
}
}
但我收到如下错误:类型不匹配:无法从 AppearencePrefFragment 转换为 Fragment
...我该怎么做?
ps: 我尝试导入 support-v13 但似乎与 v7 冲突
最佳答案
您可以将 PreferenceFragment
与 getFragmentManager
一起使用,即使您正在使用 ActionBarActivity
(当然是在 11 以上的 API 上)。
But i get errors like: Type mismatch: cannot convert from AppearencePrefFragment to Fragment ...
问题是 FragmentPagerAdapter
只接受 fragment 管理器的支持或 native 实现。这意味着您不能在寻呼机内组合原生 fragment 和支持 fragment 。
选项 1:使用 native (咳咳……我的意思是支持 v13)FragmentPagerAdapter
并将所有 fragment 转换为 native 。
虽然原生 fragment 实现中存在一些因 API 而异的错误,但我不会选择此选项。
选项 2:使用支持 (support-v4) FragmentPagerAdapter
和 PreferenceFragment
的支持版本。
在您的模块 build.gradle
文件中添加以下依赖项
compile('com.android.support:support-v4-preferencefragment:1.+@aar') {
exclude module: 'support-v4'
}
将它的存储库添加到您的项目 build.gradle
文件
allprojects {
repositories {
mavenLocal()
maven {
// this is the one
url "https://raw.github.com/kolavar/android-support-v4-preferencefragment/master/maven-repository/"
}
jcenter()
}
}
最后让您的偏好 fragment 扩展 android.support.v4.preference.PreferenceFragment
而不是 android.preference.PreferenceFragment
。请注意,尽管它的名字不是官方的反向移植,但我已经相当成功地使用它一段时间了。
关于android - 无法从 ActionBarActivity 切换 PreferenceFragment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28974725/
PreferenceFragment 首选项直到我加载首选项 fragment 后才添加到我的 SharedPreference 映射中。 这是 PreferenceFragment 的预期行为吗?
背景 在以前版本的支持库中,我们可以使用标题来获得设置的主菜单屏幕,每个屏幕都会打开一个新的设置屏幕( fragment )。 问题 现在 header 消失了(如写的 here )一段时间,我认为它
我有一个 PreferenceFragment,我需要在其中添加自定义首选项。现在问题不在于自定义首选项本身,我已经扩展了一些 DialogPreference 创建我自己的首选项,并且我已经处理了保
我需要创建一个settings screen ,其中只有前半部分包含首选项。 我正在考虑添加 PreferenceFragment ,但是我需要支持较旧的设备(最低支持的 API 级别为 9),并且我
我正在创建一个带有主菜单的应用程序,这些菜单项之一将打开一个 PreferenceFragment。为了在应用程序内创建统一性,我希望主菜单看起来尽可能接近 PreferenceFragment。基本
public class MyPrefs extends PreferenceActivity { public static class MyPreferenceFragment exten
在首选项 fragment 中,您可以添加一个图标以显示在首选项的左侧。然而,没有图标的首选项对齐方式很时髦。我如何添加空格以使所有首选项具有相同的对齐方式。我在下面附上了一张图片。 我试过添加 an
当我的小部件添加到主屏幕时,我使用 PreferenceFragment 对其进行配置。用户根据自己的喜好编辑首选项后,如何关闭首选项 fragment ,以便随后可以根据设置添加小部件? 我正在考虑
我想在我的 PreferenceActivity 中获得一个选择文件对话框,我该如何实现?我可以以某种方式覆盖 PreferenceActivity 的 onClick 吗?安卓 API 14。 这是
我正在尝试使用 PreferenceFragment 而不是 PreferenceActivity,因为我不喜欢在我的代码中使用“已弃用”一词。 我已经构建了我的首选项布局和 PreferenceFr
在我的应用程序中,我有偏好:“pref1”,可能的值为 0、1、2。我在 SharedPreferences 类的帮助下保存它们。 我想提供一个用户界面来改变它。我创建类 SettingFragmen
我尝试使用 PreferenceFragment 从 Activity 调用它,当我从 ActionBar 单击一个图标时,我只是调用 FragmentPreferences whit Intent:
我在 Android 中加载 PreferenceFragment 时遇到问题。在这一点上,它是一个非常基本的实现,我想稍后在它工作时对其进行扩展。 问题是导航到 SettingsFragment 后
我又搜索了几个小时,但没有找到我理解/正在寻找的答案。 我有一个首选项屏幕,当用户单击菜单中的设置时它会打开。这行得通。但是,当用户完成设置时,我如何最好地让他关闭此屏幕。 我喜欢 Chrome 中的
我正在开发一个应用程序,我一直在使用支持库 fragment ,我偶然发现了这个问题,我似乎无法使用它添加 PreferencesFragment(用于设置)图书馆? 我找到了一些使用 v7 Pref
如标题所示,我的 PreferenceFragment 与我的工具栏重叠。我已经尝试过不同的解决方案,但问题仍然存在。希望有任何帮助。这是我的代码。 Activity : import android
我有包含左右 fragment 的多 Pane View 。在右边的 fragment 上,我正在启动一个 PreferenceFragment。问题是 fragment 看起来完全扭曲,没有任何风格
我创建了一个包含两个类别和一个复选框的 PreferenceFragment,但是,当我在我的应用程序中显示它时,背景似乎是透明的。 我可以看到主要 Activity 、字段和 PreferenceF
我正在尝试实现“设置”应用的外观,这意味着我正在寻找在类别之间添加分隔线的解决方案。 所以我以为我找到了解决方案,但不幸的是它对我不起作用。正如所建议的那样,我应该在布局中添加空首选项:
我想在我的首选项屏幕底部添加几个按钮,用于设置默认值和恢复默认值。 This答案不包括如何使用 PreferenceFragment 执行此操作。推荐的方法是什么? 加载首选项 fragment 的
我是一名优秀的程序员,十分优秀!