Java ListView和McClickListener没有';不要被解雇

Java ListView和McClickListener没有';不要被解雇,java,android,android-fragments,android-listview,Java,Android,Android Fragments,Android Listview,我已经建立了一个带有导航抽屉的android项目,我正在处理碎片 而activity_main.xml包含以下内容: <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/drawer_layout" android:la

我已经建立了一个带有导航抽屉的android项目,我正在处理碎片

而activity_main.xml包含以下内容:

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:id="@+id/drawer_layout"
android:layout_width="match_parent" android:layout_height="match_parent"
tools:context=".MainActivity">

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/fragment_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:focusable="false"/>

<fragment android:id="@+id/navigation_drawer"
    android:layout_width="@dimen/navigation_drawer_width" android:layout_height="match_parent"
    android:layout_gravity="start" android:name="com.waldispd.homecast.NavigationDrawerFragment"
    tools:layout="@layout/fragment_navigation_drawer" />

</android.support.v4.widget.DrawerLayout>
fragment_staffel.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:descendantFocusability="blocksDescendants">
<ListView
    android:id="@+id/staffelList"
    android:layout_alignParentLeft="true"
    android:layout_marginLeft="0dp"
    android:layout_alignParentTop="true"
    android:layout_marginTop="0dp"
    android:layout_width="match_parent"
    android:layout_height="match_parent"></ListView>
</LinearLayout>

问题是,当我想从listview项接收项click时,它不会被触发。在listview上也不可能滚动

项目单击侦听器:

ListView staffelListView = (ListView) findViewById(R.id.staffelList);
staffelListView.setOnItemClickListener(new AdapterView.OnItemClickListener()
{
     @Override
     public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3)
     {
         LoadStaffel(position);
     }
 });
 staffelListView.setAdapter(new ArrayAdapter<String>(this, R.layout.drawer_listview_item, staffelTitel));
ListView staffelListView=(ListView)findViewById(R.id.staffelList);
staffelListView.setOnItemClickListener(新的AdapterView.OnItemClickListener()
{
@凌驾
public void onItemClick(适配器视图arg0、视图arg1、内部位置、长arg3)
{
L(职位);
}
});
setAdapter(新的ArrayAdapter(this,R.layout.drawer_listview_项,staffelitel));

在大多数其他问题上,他们说要添加“android:DegenantFocusability=“BlocksDescents”,但这并没有解决问题。有人有想法吗?

不要使用
staffelListView.setOnItemClickListener
使用
staffelListView.setOnClickListener
尝试在每个子布局中使用此选项

android:focusable="false"
android:focusableInTouchMode="false"
并移除你为此所做的其他事情。也来自listview

或 去掉这个

android:descendantFocusability="blocksDescendants"
如果你需要android:DegenantFocusability

parent.setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS);
        ((ViewGroup) v).setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS);

试试这个..

staffelListView.setOnItemClickListener(new OnItemClickListener()
{
     @Override
     public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3)
     {
         LoadStaffel(position);
     }
 });
 staffelListView.setAdapter(new ArrayAdapter<String>(this, R.layout.drawer_listview_item, staffelTitel));
staffelListView.setOnItemClickListener(新的OnItemClickListener()
{
@凌驾
public void onItemClick(适配器视图arg0、视图arg1、内部位置、长arg3)
{
L(职位);
}
});
setAdapter(新的ArrayAdapter(this,R.layout.drawer_listview_项,staffelitel));

你说的“按钮布局”到底是什么意思?我根本没用过纽扣。这并不能解决滚动问题,也不能解决点击事件引发的问题?这也不能解决任何问题:/I我慢慢地感觉到碎片有点不正确。LoadStafferFragment似乎被多次调用,也许这就是问题所在。但是使用fragmentmanager.replace(…)视图不可见,每次调用fragmentmngr.Add(…)时是否正确?因为我不需要使用compat库,所以无法工作。并且它总是将AdapterView或Adapterviewcompat放在OnItemclickListener()之前。您确定它没有被激发吗?你试过记录它吗?我已经在LoadStaffel(位置)中添加了一个断点,并且在函数中添加了一个断点(是的,我处于调试模式)你能发布整个getView()吗?它非常容易出错,这可能是您根本没有想到的。片段处理(添加而不是替换)存在严重问题,现在我可以滚动并希望很快在“java.lang.RuntimeException:不要调用setOnClickListener获取AdapterView”中单击itemsends。您可能希望改为setOnItemClickListener’例外:答案是:现在我在setAdapter之后就有了它,没有任何更改
staffelListView.setOnItemClickListener(new OnItemClickListener()
{
     @Override
     public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3)
     {
         LoadStaffel(position);
     }
 });
 staffelListView.setAdapter(new ArrayAdapter<String>(this, R.layout.drawer_listview_item, staffelTitel));