Java TabHost中ListView的单击事件出现问题

Java TabHost中ListView的单击事件出现问题,java,android,listview,android-fragments,onitemclick,Java,Android,Listview,Android Fragments,Onitemclick,我有个问题。 我正在开发一个使用抽屉布局的应用程序,并参考这个示例 横向菜单工作正常,但我的片段(内容)加载了3个选项卡,每个选项卡都有一个listview,我的问题是方法onItemClick(setOnItemClickListener)不起作用,即选择一个项并不能解决任何问题。有什么想法吗?。谢谢 PS:对不起,我的英语不好 PrincipalActivity.java public class PrincipalActivity extends AppCompatActivity {

我有个问题。 我正在开发一个使用抽屉布局的应用程序,并参考这个示例

横向菜单工作正常,但我的片段(内容)加载了3个选项卡,每个选项卡都有一个listview,我的问题是方法onItemClick(setOnItemClickListener)不起作用,即选择一个项并不能解决任何问题。有什么想法吗?。谢谢

PS:对不起,我的英语不好

PrincipalActivity.java

public class PrincipalActivity extends AppCompatActivity {

private DrawerLayout mDrawerLayout;
private ListView mDrawerList;
private String[] mLeftPanel;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_principal);
    initUI();
}

private void initUI(){
    mLeftPanel = getResources().getStringArray(R.array.menu_array);
    mDrawerLayout = (DrawerLayout) findViewById(R.id.dwrMain);
    mDrawerList = (ListView) findViewById(R.id.leftPanel);

    ArrayList<DrawerOption> items = new ArrayList<DrawerOption>();
    items.add(new DrawerOption(R.drawable.ic_plan_visit,mLeftPanel[0]));
    items.add(new DrawerOption(R.drawable.ic_clients,mLeftPanel[1]));
    items.add(new DrawerOption(R.drawable.ic_search,mLeftPanel[2]));
    items.add(new DrawerOption(R.drawable.ic_sinchronize,mLeftPanel[3]));
    items.add(new DrawerOption(R.drawable.ic_configure,mLeftPanel[4]));
    items.add(new DrawerOption(R.drawable.ic_logout, mLeftPanel[5]));
    mDrawerLayout.setDrawerShadow(R.color.listViewBackground, GravityCompat.START);
    mDrawerList.setAdapter(new DrawerOptionAdapter(this, items));

    mDrawerList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
            if (position == 0) {
                fragmentPlanVisit(position);
                getSupportActionBar().setTitle(mLeftPanel[0]);
            } 
            ......

            mDrawerLayout.closeDrawers();
        }
    });

    ......

}    

public boolean onCreateOptionsMenu(Menu menu){
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.menu_main, menu);
    return super.onCreateOptionsMenu(menu);
}

public boolean onOptionsItemSelected(MenuItem menuItem){
    int id = menuItem.getItemId();
    if (id == android.R.id.home){
        if (mDrawerLayout.isDrawerOpen(mDrawerList)){
            mDrawerLayout.closeDrawers();
        }else{
            mDrawerLayout.openDrawer(mDrawerList);
        }
    }
    return super.onOptionsItemSelected(menuItem);
}

private void fragmentPlanVisit(int position){
    Fragment fragment = new PlanVisitActivity();
    if (fragment != null) {
        FragmentManager fragmentManager = getSupportFragmentManager();
        fragmentManager.beginTransaction()
                .replace(R.id.content_fragment, fragment)
                .commit();
        mDrawerList.setItemChecked(position, true);
    }
}
}
public class PlanVisitActivity extends Fragment {

private TabHost tabHost;
private ListView lstPlanVisitCurse;
private ListView lstPlanVisitDay;
private ListView lstPlanVisitFuture;
private ArrayList<PlanVisits> outLstPlanVisits = new ArrayList<PlanVisits>();

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.activity_planvisit, container, false);

    lstPlanVisitCurse = (ListView)(view.findViewById(R.id.lstPlanVisit_Tab1));
    lstPlanVisitCurse.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
            Log.i("PlanVisitActivity", String.valueOf(i));
            .....
            .....
        }
    });

    ......

    tabHost = (TabHost)(view.findViewById(R.id.tabHost));
    tabHost.setup();

    TabHost.TabSpec spec = tabHost.newTabSpec(getResources().getString(R.string.tab1));
    spec.setIndicator(getResources().getString(R.string.tab1));
    spec.setContent(R.id.tab1);
    tabHost.addTab(spec);

    spec = tabHost.newTabSpec(getResources().getString(R.string.tab2));
    spec.setIndicator(getResources().getString(R.string.tab2));
    spec.setContent(R.id.tab2);
    tabHost.addTab(spec);

    spec = tabHost.newTabSpec(getResources().getString(R.string.tab3));
    spec.setIndicator(getResources().getString(R.string.tab3));
    spec.setContent(R.id.tab3);
    tabHost.addTab(spec);

    tabHost.setCurrentTab(0);
    getListPlanVisit();

    return view;
}

private void getListPlanVisit() {

    tabHost.setOnTabChangedListener(new TabHost.OnTabChangeListener() {
        @Override
        public void onTabChanged(String s) {
            int tab = tabHost.getCurrentTab();
            try {
                if (tab == 0) {
                    final PlanVisitsTask tk = new PlanVisitsTask(getActivity().getWindow().getContext(), lstPlanVisitCurse, tab);
                    tk.execute();
                    outLstPlanVisits = (ArrayList<PlanVisits>) tk.get();
                } else if (tab == 1) {
                    final PlanVisitsTask tk = new PlanVisitsTask(getActivity().getWindow().getContext(), lstPlanVisitDay, tab);
                    tk.execute();
                    outLstPlanVisits = (ArrayList<PlanVisits>) tk.get();
                } else if (tab == 2) {
                    final PlanVisitsTask tk = new PlanVisitsTask(getActivity().getWindow().getContext(), lstPlanVisitFuture, tab);
                    tk.execute();
                    outLstPlanVisits = (ArrayList<PlanVisits>) tk.get();
                }
            } catch (InterruptedException e) {
                e.printStackTrace();
            } catch (ExecutionException e) {
                e.printStackTrace();
            }
        }
    });
}
}
公共类PrincipalActivity扩展了AppCompatiaActivity{
私人抽屉布局mDrawerLayout;
私有列表视图mDrawerList;
私有字符串[]mLeftPanel;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_principal);
initUI();
}
私有void initUI(){
mLeftPanel=getResources().getStringArray(R.array.menu_数组);
mDrawerLayout=(抽屉布局)findViewById(R.id.dwrMain);
mDrawerList=(ListView)findViewById(R.id.leftPanel);
ArrayList items=新建ArrayList();
添加项目(新的抽屉式(R.drawable.ic_plan_Visite,mLeftPanel[0]);
添加项目(新的付款人配置(R.drawable.ic_客户,mLeftPanel[1]);
项目。添加(新的抽屉布局(R.drawable.ic_search,mLeftPanel[2]);
项目。添加(新的抽屉式(R.drawable.ic_sinchronize,mLeftPanel[3]);
添加(新的抽屉式布局(R.drawable.ic_配置,mLeftPanel[4]);
添加(新的抽屉式(R.drawable.ic_注销,mLeftPanel[5]);
mDrawerLayout.setDrawerShadow(R.color.listViewBackground,GravityCompat.START);
setAdapter(新的DrawerList.setAdapter(this,items));
mDrawerList.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
公共虚线单击(AdapterView AdapterView,视图视图,内部位置,长l){
如果(位置==0){
残缺计划(职位);
getSupportActionBar().setTitle(mLeftPanel[0]);
} 
......
mDrawerLayout.closeDrawers();
}
});
......
}    
公共布尔onCreateOptions菜单(菜单){
MenuInflater充气机=getMenuInflater();
充气机。充气(右菜单。主菜单,菜单);
返回super.onCreateOptions菜单(菜单);
}
公共布尔值OnOptionItemSelected(MenuItem MenuItem){
int id=menuItem.getItemId();
if(id==android.R.id.home){
if(mDrawerLayout.isDrawerOpen(mDrawerList)){
mDrawerLayout.closeDrawers();
}否则{
mDrawerLayout.openDrawer(mDrawerList);
}
}
返回super.onOptionsItemSelected(菜单项);
}
私人空间碎片计划访问(内部位置){
Fragment Fragment=新的平面可视性();
if(片段!=null){
FragmentManager FragmentManager=getSupportFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.content\u片段,片段)
.commit();
mDrawerList.setItemChecked(位置,true);
}
}
}
活动\u principal.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
  xmlns:android="http://schemas.android.com/apk/res/android"    
  android:id="@+id/dwrMain"
  android:layout_width="match_parent"
  android:layout_height="match_parent">

<FrameLayout
    android:id="@+id/content_fragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/ContentBackground"/>

<ListView
    android:id="@+id/leftPanel"
    android:layout_width="250dp"
    android:layout_height="match_parent"
    android:choiceMode="singleChoice"
    android:layout_gravity="start"
    android:divider="@color/divideColorMenuDrawer"
    android:dividerHeight="1dp"
    android:background="@color/listViewBackground"
    android:layout_weight="1"/>

</android.support.v4.widget.DrawerLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:background="@color/ContentBackground"
  android:focusable="false"
  android:focusableInTouchMode="false">

<TabHost
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/tabHost"
    android:layout_gravity="center_horizontal">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <TabWidget
            android:id="@android:id/tabs"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@color/colorPrimary"></TabWidget>

        <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <LinearLayout
                android:id="@+id/tab1"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical">

                <ListView
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:id="@+id/lstPlanVisit_Tab1"
                    android:divider="@color/divideColorlistView"
                    android:dividerHeight="1dp"
                    android:background="@color/listViewBackground"
                    android:choiceMode="singleChoice"/>
            </LinearLayout>

            <LinearLayout
                android:id="@+id/tab2"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical">

                <ListView
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:id="@+id/lstPlanVisit_Tab2"
                    android:divider="@color/divideColorlistView"
                    android:dividerHeight="1dp"
                    android:background="@color/listViewBackground"
                    android:choiceMode="singleChoice" />
            </LinearLayout>

            <LinearLayout
                android:id="@+id/tab3"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical">

                <ListView
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:id="@+id/lstPlanVisit_Tab3"
                    android:divider="@color/divideColorlistView"
                    android:dividerHeight="1dp"
                    android:background="@color/listViewBackground"
                    android:choiceMode="singleChoice" />
            </LinearLayout>
        </FrameLayout>
    </LinearLayout>
</TabHost>
</LinearLayout>

planVisitivity.java

public class PrincipalActivity extends AppCompatActivity {

private DrawerLayout mDrawerLayout;
private ListView mDrawerList;
private String[] mLeftPanel;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_principal);
    initUI();
}

private void initUI(){
    mLeftPanel = getResources().getStringArray(R.array.menu_array);
    mDrawerLayout = (DrawerLayout) findViewById(R.id.dwrMain);
    mDrawerList = (ListView) findViewById(R.id.leftPanel);

    ArrayList<DrawerOption> items = new ArrayList<DrawerOption>();
    items.add(new DrawerOption(R.drawable.ic_plan_visit,mLeftPanel[0]));
    items.add(new DrawerOption(R.drawable.ic_clients,mLeftPanel[1]));
    items.add(new DrawerOption(R.drawable.ic_search,mLeftPanel[2]));
    items.add(new DrawerOption(R.drawable.ic_sinchronize,mLeftPanel[3]));
    items.add(new DrawerOption(R.drawable.ic_configure,mLeftPanel[4]));
    items.add(new DrawerOption(R.drawable.ic_logout, mLeftPanel[5]));
    mDrawerLayout.setDrawerShadow(R.color.listViewBackground, GravityCompat.START);
    mDrawerList.setAdapter(new DrawerOptionAdapter(this, items));

    mDrawerList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
            if (position == 0) {
                fragmentPlanVisit(position);
                getSupportActionBar().setTitle(mLeftPanel[0]);
            } 
            ......

            mDrawerLayout.closeDrawers();
        }
    });

    ......

}    

public boolean onCreateOptionsMenu(Menu menu){
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.menu_main, menu);
    return super.onCreateOptionsMenu(menu);
}

public boolean onOptionsItemSelected(MenuItem menuItem){
    int id = menuItem.getItemId();
    if (id == android.R.id.home){
        if (mDrawerLayout.isDrawerOpen(mDrawerList)){
            mDrawerLayout.closeDrawers();
        }else{
            mDrawerLayout.openDrawer(mDrawerList);
        }
    }
    return super.onOptionsItemSelected(menuItem);
}

private void fragmentPlanVisit(int position){
    Fragment fragment = new PlanVisitActivity();
    if (fragment != null) {
        FragmentManager fragmentManager = getSupportFragmentManager();
        fragmentManager.beginTransaction()
                .replace(R.id.content_fragment, fragment)
                .commit();
        mDrawerList.setItemChecked(position, true);
    }
}
}
public class PlanVisitActivity extends Fragment {

private TabHost tabHost;
private ListView lstPlanVisitCurse;
private ListView lstPlanVisitDay;
private ListView lstPlanVisitFuture;
private ArrayList<PlanVisits> outLstPlanVisits = new ArrayList<PlanVisits>();

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.activity_planvisit, container, false);

    lstPlanVisitCurse = (ListView)(view.findViewById(R.id.lstPlanVisit_Tab1));
    lstPlanVisitCurse.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
            Log.i("PlanVisitActivity", String.valueOf(i));
            .....
            .....
        }
    });

    ......

    tabHost = (TabHost)(view.findViewById(R.id.tabHost));
    tabHost.setup();

    TabHost.TabSpec spec = tabHost.newTabSpec(getResources().getString(R.string.tab1));
    spec.setIndicator(getResources().getString(R.string.tab1));
    spec.setContent(R.id.tab1);
    tabHost.addTab(spec);

    spec = tabHost.newTabSpec(getResources().getString(R.string.tab2));
    spec.setIndicator(getResources().getString(R.string.tab2));
    spec.setContent(R.id.tab2);
    tabHost.addTab(spec);

    spec = tabHost.newTabSpec(getResources().getString(R.string.tab3));
    spec.setIndicator(getResources().getString(R.string.tab3));
    spec.setContent(R.id.tab3);
    tabHost.addTab(spec);

    tabHost.setCurrentTab(0);
    getListPlanVisit();

    return view;
}

private void getListPlanVisit() {

    tabHost.setOnTabChangedListener(new TabHost.OnTabChangeListener() {
        @Override
        public void onTabChanged(String s) {
            int tab = tabHost.getCurrentTab();
            try {
                if (tab == 0) {
                    final PlanVisitsTask tk = new PlanVisitsTask(getActivity().getWindow().getContext(), lstPlanVisitCurse, tab);
                    tk.execute();
                    outLstPlanVisits = (ArrayList<PlanVisits>) tk.get();
                } else if (tab == 1) {
                    final PlanVisitsTask tk = new PlanVisitsTask(getActivity().getWindow().getContext(), lstPlanVisitDay, tab);
                    tk.execute();
                    outLstPlanVisits = (ArrayList<PlanVisits>) tk.get();
                } else if (tab == 2) {
                    final PlanVisitsTask tk = new PlanVisitsTask(getActivity().getWindow().getContext(), lstPlanVisitFuture, tab);
                    tk.execute();
                    outLstPlanVisits = (ArrayList<PlanVisits>) tk.get();
                }
            } catch (InterruptedException e) {
                e.printStackTrace();
            } catch (ExecutionException e) {
                e.printStackTrace();
            }
        }
    });
}
}
公共类平面可视性扩展片段{
私有TabHost TabHost;
私有ListView lstPlanVisitCourse;
私有列表视图lstPlanVisitDay;
私有列表视图lstPlanVisitFuture;
private ArrayList outlstplanvisions=new ArrayList();
@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
视图=充气机。充气(R.layout.activity\u planvisit,容器,false);
lstplanvisitCourse=(ListView)(view.findViewById(R.id.lstPlanVisit_Tab1));
lstplanvisitCourse.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
公共无效onItemClick(AdapterView AdapterView、View视图、int i、long l){
Log.i(“平面可视性”,String.valueOf(i));
.....
.....
}
});
......
tabHost=(tabHost)(view.findviewbyd(R.id.tabHost));
tabHost.setup();
TabHost.TabSpec spec=TabHost.newTabSpec(getResources().getString(R.string.tab1));
spec.setIndicator(getResources().getString(R.string.tab1));
规格设置内容(R.id.tab1);
tabHost.addTab(spec);
spec=tabHost.newTabSpec(getResources().getString(R.string.tab2));
spec.setIndicator(getResources().getString(R.string.tab2));
规格设置内容(R.id.tab2);
tabHost.addTab(spec);
spec=tabHost.newTabSpec(getResources().getString(R.string.tab3));
spec.setIndicator(getResources().getString(R.string.tab3));
规格设置内容(R.id.tab3);
tabHost.addTab(spec);
tabHost.setCurrentTab(0);
getListPlanVisit();
返回视图;
}
私有void getListPlanVisition(){
tabHost.setOnTabChangedListener(新tabHost.ontabchangedListener(){
@凌驾
已更改的公共无效项(字符串s){
int tab=tabHost.getCurrentTab();
试一试{
如果(制表符==0){
final PlanVisitTask tk=新的PlanVisitTask(getActivity().getWindow().getContext(),LstPlanVisitCourse,选项卡);
tk.execute();
outlstplanvists=(ArrayList)tk.get();
}else if(tab==1){
最终计划访问任务tk=新计划访问任务(getActivity().getWindow().getContext(),lstPlanVisitDay,选项卡);
tk.execute();
outlstplanvists=(ArrayList)tk.get();
}否则,如果(制表符==2){
final PlanVisitTask tk=新的PlanVisitTask(getActivity().getWindow().getContext(),lstPlanVisitFuture,选项卡);
tk.execute();
outlstplanvists=(ArrayList)tk.get();
}
}捕捉(中断异常e){
e、 printStackTrace();
}捕获(执行例外){
e、 printStackTrace();
}
}
});
}
}