0

我有一个 Activity(呼叫 Home)扩展了 SherlockFragmentActivity,它有 5 个选项卡。每个 Tab 都是一个 SherlockFragment。

这是布局 home.xml :

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<android.support.v4.view.ViewPager
    android:id="@+id/pager"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" >
</android.support.v4.view.ViewPager>

这是家用适配器:

public class ViewPagerAdapter extends FragmentPagerAdapter {

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

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

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

    // Open FragmentTab1.java
    case 0:
        FragmentTab1 fragmenttab1 = new FragmentTab1();
        return fragmenttab1;

        // Open FragmentTab2.java
    case 1:
        FragmentTab2 fragmenttab2 = new FragmentTab2();
        return fragmenttab2;

        // Open FragmentTab3.java
    case 2:
        FragmentTab3 fragmenttab3 = new FragmentTab3();
        return fragmenttab3;

    case 3:
        FragmentTab4 fragmenttab4 = new FragmentTab4();
        return fragmenttab4;

        // Open FragmentTab3.java
    case 4:
        FragmentTab5 fragmenttab5 = new FragmentTab5();
        return fragmenttab5;
    }
    return null;
}

@Override
public int getCount() {
    // TODO Auto-generated method stub
    return PAGE_COUNT;
}

}

每个扩展 SherlockFragment 的 Tab 都有一个 ListView。

我想要的只是当单击 ListView 的每个项目时,在同一位置替换一个新的 Fragment。

我尝试使用 Adapter for ListView 但我的应用程序强制丢失。

public class ListAdapter extends BaseAdapter {

    ......................

private FragmentManager mFragmentManager;

public ListAdapter(FragmentManager fm) {
    this.mFragmentManager = fm;
}

    ..............

@Override
public View getView(final int position, View convertView, ViewGroup parent) {

                    ........................

        convertView.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            // Create new fragment and transaction
            FragmentDetail newFragment = new FragmentDetail();
            FragmentTransaction ft = mFragmentManager.beginTransaction();

            // Replace fragmenttab1.xml layout. It's id is R.id.container 
            ft.replace(R.id.container, newFragment);
            ft.addToBackStack(null);

            // Commit the transaction
            ft.commit();

        }
    });

    return convertView;
}

}

这是LogCat。LogCat 中的 ListVideoAdapter 就是上面的 ListAdapter。

在此处输入图像描述

我怎样才能做到这一点?

在此处输入图像描述

4

1 回答 1

0

您没有初始化convertView,并且在setOnclickListener 时出现nullpointerexception

public View getView(final int position, View convertView, ViewGroup parent)
于 2013-06-28T06:10:51.743 回答