を使用しFragmentActivity
てシングルを追加する があります。すべて問題ありませんが、次のようにのを設定しようとすると、「コンテンツ ビューが作成されていません」というエラーが発生し ました。ListFragment
FragmentTrasaction
onItemClickListener
ListView
ListFragment
public class ContactList extends FragmentActivity implements
LoaderManager.LoaderCallbacks<Cursor>, OnItemClickListener {
static private final String TAG = ContactList.class.getSimpleName();
private SimpleCursorAdapter mListAdapter;
ListFragment mListFrag;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mListFrag = new ListFragment();
if (savedInstanceState == null) {
// add list view fragment
FragmentTransaction ft = getSupportFragmentManager()
.beginTransaction();
ft.add(android.R.id.content, mListFrag);
ft.commit();
}
// set up list view adapter:
mListAdapter = new SimpleCursorAdapter(this,
android.R.layout.simple_list_item_1, null,
new String[] { ContactsContract.Contacts.DISPLAY_NAME },
new int[] { android.R.id.text1 },
SimpleCursorAdapter.NO_SELECTION);
// (we will switch in the cursor later)
mListFrag.setListAdapter(mListAdapter);
// set list view click listener:
// (THIS LINE, I KNOW NOW, CAUSES PROBLEMS - SO I MOVED IT
// TO onCreateView):
//mListFrag.getListView().setOnItemClickListener(this);
// initial cursor loader:
getSupportLoaderManager().initLoader(0, null, this);
}
メソッドを呼び出そうとしているので、まだ表示されていないことにすぐに気付きましgetListView
た。だから、私はラインラインをに移動しました:onCreate
ListView
setOnItemClickListener
onCreateView
@Override
public View onCreateView(String name, Context context, AttributeSet attrs) {
View v = super.onCreateView(name, context, attrs);
// set list view click listener:
mListFrag.getListView().setOnItemClickListener(this); // this still crashes
return v;
}
残念ながら、これはまだ「コンテンツ ビューが作成されていません」というエラーでクラッシュします。私はこれを理解していません - 確かに、super.onCreateView
すべてのビューを呼び出した後、作成されたはずですか?
inItemClickListener
「onResume()」に入れることでようやく動作するようになりましたが、なぜ動作しなかったのかわかりませんonCreateView
。
誰でも私を啓発できますか?
ありがとう。