【问题标题】:SherlockListFragment Causing IllegalStateException Must Attach to SherlockListActivity导致 IllegalStateException 的 SherlockListFragment 必须附加到 SherlockListActivity
【发布时间】:2012-11-27 21:20:58
【问题描述】:

我有一个类为滑动菜单创建一个 behindMenu,如下所示:

public class BehindMenuFragment extends ListFragment {

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    String[] categories = getResources().getStringArray(R.array.categories);
    CategoryAdapter adapter = new CategoryAdapter(getActivity());
    int cats = categories.length;
    for (int i = 0; i < cats; i++) {
        adapter.add(new CategoryItem(categories[i], getIcon(categories[i])));
        }
    setListAdapter(adapter);
}

它被另一个活动 MainActivity 调用,代码如下:

getSupportFragmentManager()
    .beginTransaction()
    .replace(R.id.menu_frame, new BehindMenuFragment ())
    .commit();

上面的代码可以正常工作,没有问题,我想使用 ActionBarSherlock 将操作栏插入到后面的菜单中,我已经尝试了各种可能的方法,但无济于事。

将BehindMenuFragment 扩展为SherlockListFragment 会出现以下错误:

IllegalStateException:BehindMenuFragment 必须附加到 SherlockFragmentActivity

我很茫然,不知道如何解决这个问题,请帮忙!

【问题讨论】:

  • MainActivity 现在扩展什么类型的Activity?
  • 什么是 SlidingFragmentActivity?
  • 它是 Jeremy Feinstein github.com/jfeinstein10/SlidingMenu的图书馆
  • 这看起来像一个不错的库...我得自己尝试一下。

标签: android actionbarsherlock android-listfragment


【解决方案1】:

看来你还没有完成step four

使用 ActionBarSherlock 设置

  1. 如上设置。
  2. 签出 ActionBarSherlock 的干净副本并导入您的 Eclipse 工作区。
  3. 将 ActionBarSherlock 添加为 SlidingMenu 的依赖项
  4. 进入您计划使用的 SlidingActivity,使其扩展 Sherlock___Activity 而不是 ___Activity

我从未使用过这个库,你应该将 MainActivity 更改为:

public class MainActivity extends SherlockSlidingFragmentActivity {

现在您可以使用 SherlockListFragment:

public class BehindMenuFragment extends SherlockListFragment {

并添加 Sherlock 的 ActionBar。

【讨论】:

  • 我不敢相信这一点,我昨天不得不这样做以进行另一项活动。今天学到了很好的一课!谢谢谢谢山姆!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-06-19
  • 1970-01-01
  • 1970-01-01
  • 2017-03-15
  • 2014-11-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多