1

マスター/ディテール フロー アクティビティ用に ADT が生成するテンプレートがかなりわかりにくいことがわかりました。ListView がレイアウト ファイルで宣言されていないため、プログラムで操作する必要があるという事実が気に入りません。たとえば、レイアウト ファイルで ListView を設定するだけでなく、フラグメントのメソッドでandroid:backgroundfindViewById を使用して 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 のサンプル プロジェクト

4

1 に答える 1

1

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="match_parent"
    android:layout_height="match_parent" />
于 2013-04-30T00:26:28.450 に答える