Erreur android.contenu.res.Ressources$NotFoundException: Fichier de type xml disposition de la ressource ID #0x102000a
Hey, je suis en train de créer un design pour une liste qui ressemble (et surtout se comporte comme) le journal des appels, comme illustré ici:
Pour cela, j'ai téléchargé le code source et j'étudie pour savoir quelle classe et le fichier xml de la mettre en œuvre.
Et j'ai trouvé ces deux fichiers xml recent_calls_list_item.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="?android:attr/listPreferredItemHeight"
android:paddingLeft="7dip">
<com.psyhclo.DontPressWithParentImageView
android:id="@+id/call_icon" android:layout_width="wrap_content"
android:layout_height="match_parent" android:paddingLeft="14dip"
android:paddingRight="14dip" android:layout_alignParentRight="true"
android:gravity="center_vertical" android:src="@android:drawable/sym_action_call"
android:background="@drawable/call_background" />
<include layout="@layout/recent_calls_list_item_layout" />
et l'autre est recent_calls_list_item_layout.xml:
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android">
<View android:id="@+id/divider"
android:layout_width="1px"
android:layout_height="match_parent"
android:layout_marginTop="5dip"
android:layout_marginBottom="5dip"
android:layout_toLeftOf="@id/call_icon"
android:layout_marginLeft="11dip"
android:background="@drawable/divider_vertical_dark"
/>
<ImageView android:id="@+id/call_type_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_marginLeft="4dip"
/>
<TextView android:id="@+id/date"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toLeftOf="@id/divider"
android:layout_alignParentBottom="true"
android:layout_marginBottom="8dip"
android:layout_marginLeft="10dip"
android:textAppearance="?android:attr/textAppearanceSmall"
android:singleLine="true"
/>
<TextView android:id="@+id/label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentBottom="true"
android:layout_marginLeft="36dip"
android:layout_marginRight="5dip"
android:layout_alignBaseline="@id/date"
android:singleLine="true"
android:ellipsize="marquee"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textStyle="bold"
/>
<TextView android:id="@+id/number"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/label"
android:layout_toLeftOf="@id/date"
android:layout_alignBaseline="@id/label"
android:layout_alignWithParentIfMissing="true"
android:singleLine="true"
android:ellipsize="marquee"
android:textAppearance="?android:attr/textAppearanceSmall"
/>
<TextView android:id="@+id/line1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_toLeftOf="@id/divider"
android:layout_above="@id/date"
android:layout_alignWithParentIfMissing="true"
android:layout_marginLeft="36dip"
android:layout_marginBottom="-10dip"
android:textAppearance="?android:attr/textAppearanceLarge"
android:singleLine="true"
android:ellipsize="marquee"
android:gravity="center_vertical"
/>
Et mon activité est: est-ce
public class RatedCalls extends ListActivity {
private static final String LOG_TAG = "RecentCallsList";
private TableLayout table;
private CallDataHelper cdh;
private TableRow row;
private TableRow row2;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.recent_calls_list_item);
Log.i(LOG_TAG, "calling from onCreate()");
cdh = new CallDataHelper(this);
table = new TableLayout(getApplicationContext());
row = new TableRow(getApplicationContext());
startService(new Intent(this, RatedCallsService.class));
Log.i(LOG_TAG, "Service called.");
fillList();
}
public void onResume() {
super.onResume();
fillList();
}
public void fillList() {
List<String> ratedCalls = new ArrayList<String>();
ratedCalls = this.cdh.selectTopCalls();
setListAdapter(new ArrayAdapter<String>(RatedCalls.this,
android.R.id.list, ratedCalls));
ListView lv = getListView();
lv.setTextFilterEnabled(true);
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Toast.makeText(getApplicationContext(),
((TextView) view).getText(), Toast.LENGTH_LONG).show();
}
});
}
}
Et puis j'ai essayé de l'exécuter sur l'émulateur android, puis il le LogCat a retourné une erreur comme ceci:
Causés par: java.lang.RuntimeException: Votre contenu doit avoir un ListView dont l'attribut id est " android.R.id.liste
Donc à l'intérieur de la recent_calls_list_item.xml j'ai déclaré ceci:
<ListView android:id="@android:id/list" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_x="1px"
android:layout_y="1px">
</ListView>
Et maintenant, avec cette déclarés j'ai essayé de courir dans l'émulateur, mais le LogCat renvoie une autre erreur:
android.contenu.res.Ressources$NotFoundException: Fichier de type xml disposition de la ressource ID #0x102000a
Donc, ma question est, pourquoi est-ce arrivé? Et si vous avez une autre solution pour mettre en œuvre une vue comme cela, je suis en train.
Grâce.
OriginalL'auteur rogcg | 2011-01-11
Vous devez vous connecter pour publier un commentaire.
de définir l'identifiant de votre listView
Je ne sais pas, si
fonctionne correctement
OriginalL'auteur
J'ai eu le même problème. J'étais définir le texte comme ceci:
Le problème était que firstVisiblePosition est un entier. Le compilateur n'a pas à se plaindre. Il fixe par
Grand, doit être accepté de répondre.
Toutes les ressources sont converties en nombres entiers dans Android (en R.java), de sorte que la méthode setText pense que vous faites référence à une ressource de chaîne (un qui n'existe pas).
D'une façon plus propre de le faire serait
statusView.setText(String.valueOf(firstVisiblePosition));
Ne pas concaténer des chaînes vides
OriginalL'auteur
Sons boiteux, mais si vous utilisez Eclipse, avez-vous essayé le nettoyage et la reconstruction de votre projet? Qui a résolu un problème similaire que j'avais.
OriginalL'auteur
Je suis également en mesure de résoudre le problème en convertissant la valeur de l'Entier de la Chaîne en utilisant:
où nom est un TextView.
OriginalL'auteur
Le compilateur interprète votre
int
argument comme une ressource de référence et suppose que vous appelez:mais votre intention était d'appeler
De le fixer, faire comme suit:
OriginalL'auteur
J'ai résolu ce problème en copiant les fichier XML à partir d'
layout-land
répertoirelayout
(ou vice versa). Certains appareils ont par défaut le mode paysage, d'autres le portrait. Si ce fichier n'existe pas dans ce mode, il jette cette exception.OriginalL'auteur