マスター/ディテール フロー アクティビティ用に ADT が生成するテンプレートがかなりわかりにくいことがわかりました。ListView がレイアウト ファイルで宣言されていないため、プログラムで操作する必要があるという事実が気に入りません。たとえば、レイアウト ファイルで ListView を設定するだけでなく、フラグメントのメソッドでandroid:background
findViewById を使用して ListView を検索し、. 保守性と一般的な読みやすさのために、レイアウト ファイルを介して同じことを行いたいと思います。onCreateView(...)
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));
}
}
ただし、 ListView にinの id を指定したにもかかわらず、呼び出しsetListAdapter
(または でさえsetAdapter
) は何もしないようです。android:id="@id/android:list"
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 のサンプル プロジェクト。