Pas de Vue id Android FragmentActivity avec ListFragment

Je suis d'essayer de créer une ListView. Quand je test mon code, j'ai l'erreur suivante

03-09 19:21:10.425: E/AndroidRuntime(379): java.lang.RuntimeException: Unable to start      activity ComponentInfo{com.anomaly.punchlist/com.anomaly.punchlist.TeamActivity}: java.lang.IllegalArgumentException: No view found for id 0x7f08000c for fragment TeamListFragment{4067a358 #0 id=0x7f08000c}

J'ai référencé les liens suivants avant de poster cette question, en plus de la lecture de l'Android Docs sur des Fragments, ListFragments, et ListViews.

Lien 1: FragmentActivity onCreateView


Lien 2: Problème à l'aide de ListFragment sur Android


Lien 3: Android Fragment aucun point de vue trouve une pièce d'identité?


Lien 4: Android ListFragment est confuse


Lien 5: Comment mettre à jour ListView dans ListFragment de FragmentActivity?


Lien 6: Remplir ListFragments avec une vue personnalisée?

J'ai la classe TeamActivity qui s'étend FragmentActivity et TeamListFragment qui s'étend ListFragment et met en œuvre LoaderManager.LoaderCallbacks. Veuillez voir le code ci-dessous:

TeamActivity.java

package com.anomaly.punchlist;

import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;

public class TeamActivity extends FragmentActivity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    FragmentManager fragmentManager = getSupportFragmentManager();
    FragmentTransaction fragmentTransaction =  fragmentManager.beginTransaction();
    TeamListFragment teamListFragment = new TeamListFragment();
    fragmentTransaction.add(R.id.android_teamList, teamListFragment);
    fragmentTransaction.commit();       
   }

 }

TeamListFragment.java

package com.anomaly.punchlist;
import android.database.Cursor;
import android.os.Bundle;
import android.support.v4.app.ListFragment;
import android.support.v4.app.LoaderManager;
import android.support.v4.content.CursorLoader;
import android.support.v4.content.Loader;
import android.support.v4.widget.CursorAdapter;
import android.support.v4.widget.SimpleCursorAdapter;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
import com.anomaly.punchlist.contentprovider.basecolumns.TeamBaseColumns.Team;
import com.j256.ormlite.logger.Logger;
import com.j256.ormlite.logger.LoggerFactory;
public class TeamListFragment extends ListFragment implements LoaderManager.LoaderCallbacks<Cursor> {
private static Logger logger = LoggerFactory.getLogger(TeamListFragment.class);
private ListView listView;
private SimpleCursorAdapter adapter;
private static final int TEAM_LOADER_ACTIVITY = 0x01;
private static final String[] PROJECTION = new String[] { "project_manager_id", "contact_id", "project_id" };
private static String SELECTION = "contact_id = ? AND project_id = ?";
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
}
@Override
public void onCreate(Bundle savedInstanceState) {
try {
super.onCreate(savedInstanceState);
int[] uiBindTo = { R.id.text1 };
getLoaderManager().initLoader(TEAM_LOADER_ACTIVITY, null, this);
adapter = new SimpleCursorAdapter(getActivity().getApplicationContext(), R.layout.team, null, null, uiBindTo, CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);
} catch (Exception e) {
logger.error(e.getMessage());
new RuntimeException("RuntimeException occurred in onCreate() method of TeamActivity." + e);
}
}
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
}
@Override
public Loader<Cursor> onCreateLoader(int arg0, Bundle bundle) {
String contactId = new String();
String projectId = new String();
CursorLoader cursorLoader = null;
if (bundle != null) {
contactId = bundle.getString("contact_id");
projectId = bundle.getString("project_id");
}
String[] selectionArgs = { contactId + ", " + projectId };
cursorLoader = new CursorLoader(getActivity(), Team.CONTENT_URI, PROJECTION, SELECTION, null, null);
return cursorLoader;
}
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
adapter.swapCursor(cursor);
setListShown(true);
}
@Override
public void onLoaderReset(Loader<Cursor> cursor) {
adapter.swapCursor(null);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
onCreate(savedInstanceState);
View teamView = inflater.inflate(R.layout.team, container, false);
return teamView;
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
listView = getListView();
listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
setListAdapter(adapter);
setListShown(true);
}
}

Outre le code ci-dessus, j'ai la suite de la mise en page personnalisée.

team.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingLeft="8dp"
android:paddingRight="8dp" >
<ListView
android:id="@+id/android:teamList"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="@color/grey2"
android:divider="@color/blue2"
android:dividerHeight="1dp"
android:drawSelectorOnTop="false" />
<TextView
android:id="@id/android:empty"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FF0000"
android:text="No data" />
</LinearLayout>
Qu'est-ce que id 0x7f08000c? Vous pouvez trouver la réponse à cette question vous gen/<paquet>/R.java fichier.
Hartok: Il est référencé dans une mise en page xml appel team_row.xml qui a un TextView le un android id est égal à texte1. 0x7f08000c = text1.
Merci encore pour l'aide. Cependant, j'ai mis l'id référencées à l'intérieur de mon team.xml fichier et maintenant j'ai le message suivant Causés par: java.lang.IllegalArgumentException: Pas de vue l'identité de la 0x7f08000c pour fragment TeamListFragment{4065f128 #0 id=0x7f08000c}
BTW référence id est un TextView à l'intérieur de la team.xml fichier.
Vous ne devez pas modifier R.java

OriginalL'auteur dionysus | 2013-03-10