我发现 ADT 为 Master/Detail Flow Activity 生成的模板相当迟钝,而且我不喜欢 ListView 没有在布局文件中声明的事实,这迫使我以编程方式使用它。例如,android:background
我不只是在布局文件中设置 ListView,而是被迫通过片段onCreateView(...)
方法中的 findViewById 找到 ListView,然后调用setBackground(...)
. 为了可维护性和一般可读性,我想通过布局文件做同样的事情。
相反,我试图在onCreateView
“主”片段的方法中膨胀自定义布局:
public class InboxFragment extends ListFragment {
public InboxFragment() {}
private ListView listView = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
listView = (ListView) inflater.inflate(R.layout.inbox_fragment_layout,
null);
return listView;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
// the following doesn't work
listView.setAdapter(new ArrayAdapter<DummyContent.DummyItem>(getActivity(),
android.R.layout.simple_list_item_activated_1,
android.R.id.text1,
DummyContent.ITEMS));
// nor does this
//setListAdapter(new ArrayAdapter<DummyContent.DummyItem>(getActivity(),
// android.R.layout.simple_list_item_activated_1,
// android.R.id.text1,
// DummyContent.ITEMS));
}
}
然而,调用setListAdapter
(甚至setAdapter
)似乎没有做任何事情,即使我给 ListView 一个 id 的android:id="@id/android:list"
in R.layout.inbox_fragment_layout
:
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@id/android:list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#D3D3D3" />
我的“主”活动只是调用片段布局:
public class InboxActivity extends FragmentActivity {
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.inbox_phone_layout);
}
}
inbox_phone_layout.xml:
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fragmentPhoneInbox"
android:name="com.justin.inbox.InboxFragment"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1" />
相反,我看到的是一个空白页面,它看起来根本没有加载 ListView。我在这里做错了什么?GitHub 上的示例项目。