Fehler beim Parsen der Farben von String
EDIT:EIN Pastebin, die aus der einschlägigen Teile von meinem Projekt:
Hier ist der aktualisierte code
Auch ColouredItem ist ein wrapper für:
public class ColouredItem
{//Only a wrapper class,no behaviour has been defined here
String name,colour;
}
Bekomme ich eine NumberFormatException, wenn Sie versuchen zu analysieren, eine Farbe aus einem String mit dem folgenden code:
row.setBackgroundColor(Color.parseColor(item.colour));
Verwende ich die folgenden, um eine Liste der Elemente erstellen, die aus einer Ressource:
for(int i=0;i<list.length;i++)
{
item=new ColouredMenuItem();
String[] cmenu =list[i].split("#");
item.name=cmenu[0];
item.colour="#"+cmenu[1];
Log.d(TAG, item.colour);
menuList.add(item);
}
Dies ist die exception, die ich bekomme...ich habe festgestellt, dass anzeigen.setBackgroundColor dauert nur einen integer-Wert:
#ffffff
#ffffBB
#fff45f
#ffff00
Shutting down VM
threadid=1: thread exiting with uncaught exception (group=0x4001d800)
FATAL EXCEPTION: main
java.lang.NumberFormatException: ffffff
at java.lang.Long.parse(Long.java:364)
at java.lang.Long.parseLong(Long.java:354)
at android.graphics.Color.parseColor(Color.java:207)
at com.example.samplelistproject.MadAdapter.getView(MadAdapter.java:60)
at android.widget.AbsListView.obtainView(AbsListView.java:1315)
at android.widget.ListView.makeAndAddView(ListView.java:1727)
at android.widget.ListView.fillDown(ListView.java:652)
at android.widget.ListView.fillFromTop(ListView.java:709)
at android.widget.ListView.layoutChildren(ListView.java:1580)
at android.widget.AbsListView.onLayout(AbsListView.java:1147)
at android.view.View.layout(View.java:7035)
at android.widget.FrameLayout.onLayout(FrameLayout.java:333)
at android.view.View.layout(View.java:7035)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1249)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1125)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1042)
at android.view.View.layout(View.java:7035)
at android.widget.FrameLayout.onLayout(FrameLayout.java:333)
at android.view.View.layout(View.java:7035)
at android.view.ViewRoot.performTraversals(ViewRoot.java:1045)
at android.view.ViewRoot.handleMessage(ViewRoot.java:1727)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:4627)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
at dalvik.system.NativeStart.main(Native Method)
Hinzufügen der # als einige der Antworten, die suggerieren, das Problem nicht behebt:
java.lang.NumberFormatException: Invalid long: "#ffffff"
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
at android.app.ActivityThread.access$600(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
Keinen Unterschied mit dieser Implementierung entweder:
String cmenu=list[i];
item.name=cmenu.substring(0, cmenu.indexOf("#"));
item.colour=cmenu.substring(cmenu.indexOf("#"));
android lieferte eine ausgefeilte Methode zu analysieren Farbe von string-Farbe.parseColor("#ffffff"), haben Sie versucht, es;
Ich habe in der Tat int Farbe.parseColor(string)
was ist der nutzen dieser "Artikel.Farbe="#"+cmenu[1];" wenn Sie können, verwenden Sie item.Farbe=Liste[i];
Muss ich extrahieren Sie eine Farbe aus einem größeren string,tatsächlich die Liste[i] liefert die
können Sie uns zeigen ColouredMenuItem.java Datei?
Ich habe in der Tat int Farbe.parseColor(string)
was ist der nutzen dieser "Artikel.Farbe="#"+cmenu[1];" wenn Sie können, verwenden Sie item.Farbe=Liste[i];
Muss ich extrahieren Sie eine Farbe aus einem größeren string,tatsächlich die Liste[i] liefert die
a lot of words #ffffff
.können Sie uns zeigen ColouredMenuItem.java Datei?
InformationsquelleAutor vamsiampolu | 2013-10-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden Sie diesen code
row.setBackgroundColor(Color.parseColor("#424242"));
es bei mir auch geholfen,dont remove "#".
habe ich dieses code
und seine Arbeit gud für mich,kann sein, dass Ihre split-Sache funktioniert nicht gut
oder für Ihren code
dies ist eine gute Arbeit an meiner Seite
dies ist der neue code
Machen Sie Ihre farbigen Element, wie eine bean-Klasse mit getter-und setter-wie dies
}
Dann in den adapter verwenden Sie diesen code
Probieren Sie es einfach aus,es funktioniert hier auf meiner Seite
Auch dein array ist nur na
Die ersten vier Zeilen aus dem logcat, der sah ein wenig abgeblendet aus, tatsächlich tun.
String[] cmenu =list[i].split("#"); item.name=cmenu[0]; item.colour="#"+cmenu[1];
versuchen Sie es mit einer fest Wert wie meine erste,wenn es wokrs, dann kann es ein problem in Ihrem split.
arbeitete mit einem harcoded Wert,gearbeitet, aber es funktioniert nicht, auch nach dem hinzufügen der #.
ich habe mein code bearbeitet
InformationsquelleAutor Meenal
Versuchen
Color.parseColor("#ffffff");
stattColor.parseColor("ffffff");
item.name=cmenu[0];
item.colour="#"+cmenu[1];
Die ersten vier Zeilen der logcat steht der string-Wert für die Farbe erhalten nach der Analysewarum haben Sie sich aufgeteilt?
Weil der String sieht wie Seite 1 #ffffff
Sie müssen eine
"#"
vor der Farbe hex. wie "ffffff"
muss"#ffffff"
. sonst wird es nicht funktionieren.Ich habe die Ergebnisse mit"#.Ich denke, ich mache einfach etwas falsch.Ich habe den gesamten code in ein pastebin...edit oben im post.
InformationsquelleAutor johntheripp3r
Blick auf die Stack-trace wird es Ihnen sagen:
Zeile:
so, Sie müssen einen Weg finden, analysieren von Hexadezimal statt dezimal-Wert. Hexadezimale Werte werden in der Regel vorausgeht, 0x[Wert] ODER #[value]
InformationsquelleAutor sparks
Vorausgesetzt: beim Parsen der Farbe von string-Objekt "Artikel" ist nicht in array der Liste, sondern das dauert eine Instanz-variable von ColoureMenuItem.
//überprüfen, ob der Wert analysieren, oder nicht.
und Ihre ColouredMenuItem Klasse.
hey, es wird gearbeitet an meiner Seite...
Denken Sie daran, wie
String[] list= {"Page1 #ffffff","Page2 #ffffBB"};
statt, die die variable, die Sie haben.Es arbeitet mit einer hartcodierten Zeichenfolge, aber es scheint nicht zu sein, hier zu arbeiten.InformationsquelleAutor vinaykumar