0

我需要为我的项目使用 ActionBarSherlock,但在使用 ListView 时出现错误。我知道我需要扩展到 ListActivity,但我确信还有其他方法可以解决这个问题。下面是我的课。

public class ViewPagerAdapter extends FragmentPagerAdapter {

// Declare the number of ViewPager pages
final int PAGE_COUNT = 3;

public ViewPagerAdapter(FragmentManager fm) {
    super(fm);
}

@Override
public Fragment getItem(int arg0) {
    switch (arg0) {

    // Open Maths.java
    case 0:
        MathActivity maths = new MathActivity();
        return maths;

        // Open Units.java
    case 1:
        UnitsActivity units = new UnitsActivity();
        return units;

        // Open Physics.java
    case 2:
        PhysicsActivity physics = new PhysicsActivity();
        return physics;

    }
    return null;
}

下面是我的 MathActivity 类,它扩展了 SherlockFragment。

public class MathActivity extends SherlockFragment {


public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //setContentView(R.layout.math_layout);

    String[] mathList = new String[] {"Item 1", "Item 2", "Item 3", "Item 4"};
    setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mathList));


}
4

2 回答 2

3

如果你想要一个 ListView,你可能应该扩展 SherlockListFragment,而不仅仅是 SherlockFragment。(或者你需要明确地找到你的列表并设置它的listadapter,而不是尝试在包含的片段上设置listadapter。)

您的 XML 中的 ListView 需要有一个 @android:id/list 的 id,例如 mathlist.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:orientation="vertical"
  >
  <ListView android:id="@android:id/list"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
      />
</LinearLayout>

然后是这样的:

public class MathActivity extends SherlockListFragment implements OnItemClickListener
{
  public View onCreateView(LayoutInflater inflater, ViewGroup container,
      Bundle savedInstanceState)
  {
    View view = inflater.inflate(R.layout.mathlist, null);
    String[] mathList = new String[] {"Item 1", "Item 2", "Item 3", "Item 4"};
    setListAdapter(new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, mathList));
    return view;
  }

  @Override
  public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3)
  {
    // handle listview item clicks in here    
  }

  // Don't let items be clicked until the activity has finished drawing everything:
  @Override
  public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    getListView().setOnItemClickListener(this);
  }
}
于 2013-07-28T00:17:00.253 回答
1

从“扩展 SherlockFragment”更改为“扩展 SherlockListFragment”。

于 2013-07-28T00:17:08.180 回答