Încerc să folosesc CoordinatorLayout
în aplicația mea Xamarin.Android. Am folosit o temă personalizată cu Theme.Material.Light
ca părinte, care a funcționat bine înainte de a adăuga CoordinatorLayout
. Când o adaug, primesc o eroare care îmi spune că trebuie să folosesc un Theme.AppCompat
temă, dar imediat ce o fac, aplicația nu reușește să se construiască și îmi dă următoarea eroare:
/{project directory}/Resources/values/Styles.xml(0,0):
Error APT0000: Error retrieving parent for item:
No resource found that matches the given name
'@android:style/Theme.AppCompat'. (APT0000) (TnpApp.Android)
Acest răspuns sugerează instalarea versiunii majore a bibliotecii de suport care corespunde SDK-ului Android pe care îl folosesc. Am încercat acest lucru (cred că am făcut totul corect), dar nu mă ajută.
Are cineva vreo idee?
Folosesc Xamarin Studio pe Mac.
UPDATE 1
Am încercat următorul cod în MainActivity.cs
într-un proiect Xamarin.Android curat, iar compilarea eșuează cu aceeași eroare.
namespace ThemeTest
{
[Activity(Label = "ThemeTest", MainLauncher = true, Icon = "@mipmap/icon", Theme = "@android:style/Theme.AppCompat.Light")]
public class MainActivity : Activity
{
// ...
}
}
UPDATE 2
Am eliminat toate folderele din /user/.local/share/Xamarin
cu excepția lui Mono for Android
și zips
așa cum se sugerează în acest răspuns. Am închis Xamarin Studio și l-am redeschis. Am încercat să implementez aplicația, iar Xamarin a reinstalat toate pachetele, dar compilarea a eșuat cu eroarea inițială.
Am reușit să rezolv această problemă prin simpla eliminare a @android:style/
din style
element’s parent
în fișierul Styles.xml. Deci, ceea ce arăta așa…
<style name="MyCustomTheme" parent="@android:style/Theme.AppCompat">
Acum arată așa…
<style name="MyCustomTheme" parent="Theme.AppCompat">
Sunt șocat că soluția este atât de simplă, dar funcționează. 🙂 Am preluat ideea de la acest cod.
Dezvolt în Visual Studio 2015/Xamarin și am văzut aceeași problemă. Deși încă nu înțeleg cauza sau soluția pentru această problemă, acest fir de discuție m-a îndreptat în direcția corectă, care pare să aibă mai mult de-a face cu resalvarea styles.xml (pentru mediul meu de dezvoltare) decât cu orice altceva.
Styles.xml-ul meu nu avea @android:style/
și tot am avut eroarea menționată mai sus. Așa cum am descris într-o altă soluție propusă, am adăugat
<style name="MyCustomTheme.Base" parent="Theme.AppCompat" />
înainte de <style name="MyCustomTheme" parent="Theme.AppCompat">
, am salvat styles.xml și mi-am reconstruit proiectul fără erori. Apoi am eliminat
<style name="MyCustomTheme.Base" parent="Theme.AppCompat" />
,
am salvat din nou styles.xml și am reconstruit proiectul fără erori. Din punct de vedere vizual, styles.xml-ul meu este neschimbat, dar eroarea a dispărut.
Dacă ați instalat recent un pachet legat de serviciul Google Play (firebase de exemplu , dar există multe altele) , este posibil ca această instalare să fi încurcat cu CSproj și package.json (consultați istoricul de control al versiunilor pentru a vedea dacă aceste fișiere au fost modificate) și a modificat versiunea api țintă: trecând de la Api țintă 25 la Api țintă 26, de exemplu, etc.
Dacă acesta este cazul , ar trebui să abordați această problemă într-unul din cele două moduri :
-
asigurați-vă că descărcați versiunea de sdk pe care o vizați acum , pentru a face acest lucru , mergeți la TOOLS > SDK manager.
-
sau reveniți la vechea țintă , eliminând modificarea pe care pachetul a făcut-o în fișierele csproj și package.json și curățați și reconstruiți.