我有一个ListFragment用作标签。我试图在我的ListView上使用OnItemSelectedListener,它必须启动另一个活动,并根据所选项目将特定额外的内容添加到打算中。我使用以下代码:
View rootView = inflater.inflate(R.layout.fragment_priority_tab, container, false);
ListView listView = (ListView) rootView.findViewById(android.R.id.list);
List<String> printedList = calculateProportions();
ArrayAdapter<String> expensesAdapter = new ArrayAdapter<>(mContext,
android.R.layout.simple_list_item_1, printedList);
listView.setAdapter(expensesAdapter);
listView.setClickable(true);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, final int position, long id) {
Intent intent = new Intent(mContext, ListPriority.class);
switch (position) {
case 0:
intent.putExtra("priority", "low");
startActivity(intent);
break;
case 1:
intent.putExtra("priority", "med");
startActivity(intent);
break;
case 2:
intent.putExtra("priority", "high");
startActivity(intent);
break;
case 3:
intent.putExtra("priority", "obsolete");
startActivity(intent);
break;
}
}
});
我没有任何错误或警告,但我的活动没有开始。当我调试应用程序时,我点击任何项目,我甚至没有达到我的断点。
我的ListView in XML:
<ListView
android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
我的java代码位于ListFragment中的onCreateView
答案 0 :(得分:3)
ListFragment
处理自己的OnItemClickListener
。而不是设置监听器,覆盖onListItemClick()
答案 1 :(得分:0)
在您的java类中,您的id声明是错误的:
改变自,
ListView listView = (ListView) rootView.findViewById(android.R.id.list);
要
ListView listView = (ListView) rootView.findViewById(R.id.list);
您的xml id声明错误:
改变自,
<ListView
android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
要
<ListView
android:id="@+id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />