2016-07-14 9 views
2

Ich habe ein Glas, das an einem Punkt versucht, auf den Zugriff auf die Android-Ressource mit der ID 0x7f0b0064 zuzugreifen.Wie setze ich eine feste ID für eine Android-Ressource

Ich muss dieses Glas zu meinem Projekt hinzufügen und diese ID in eine String-Ressource meiner Wahl auflösen.

Wie kann ich eine Zeichenfolge mit einer festen ID in Kompilierzeit deklarieren?

Ich habe versucht, hinzuzufügen:

In public.xml

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
     <public type="string" name="error_message" id="0x7f0b0064"/> 
</resources> 

In string.xml

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
     <string name="error_message">An error occurred</string> 
</resources> 

Aber es funktioniert nicht. Wie kann ich es tun?

Edit: Das Problem ist, dass, wenn Anruf zu einer Klasse in meinem Glas. Es wird versucht, einen Toast mit einer Nachricht zu schaffen, sondern die ID des String nicht in meinen Ressourcen gefunden:

Caused by: android.content.res.Resources$NotFoundException: String resource ID #0x7f0b0064 
at android.content.res.Resources.getText(Resources.java:312) 
at android.widget.Toast.makeText(Toast.java:286) 
at com.customservices.CheckLocationService.a(Unknown Source) 
at com.customservices.CheckLocationService.onStartCommand(Unknown Source) 
at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:3010) 
at android.app.ActivityThread.-wrap17(ActivityThread.java)  
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1442)  
at android.os.Handler.dispatchMessage(Handler.java:102)  
at android.os.Looper.loop(Looper.java:148)  
at android.app.ActivityThread.main(ActivityThread.java:5417)  
at java.lang.reflect.Method.invoke(Native Method)  
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)  
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)  
+1

Diese IDs werden in der Kompilierzeit generiert (in der R-Klasse), und afaik können sie jedes Mal ändern, also verlassen Sie sich nicht auf sie. Ich bin neugierig, warum du das tun musst. –

+0

Ich brauche es, weil das kompilierte Jar versucht, eine Zeichenfolge aus den Ressourcen mit dieser ID abzurufen, ich habe nicht den Quellcode. Und ich bekomme die Ausnahme: verursacht durch: android.content.res.Resources $ NotFoundException: String resource ID # 0x7f0b0064 – Addev

+0

posten Sie den vollen stacktrace –

Antwort

0

Haben Sie Zugriff auf die Quelle des Glases haben und können Sie es neu kompilieren?

Reflection könnte Ihnen helfen, die richtige ID zu erhalten, egal was es ist.

+0

Ich habe nicht den Quellcode des jar = ( – Addev

+0

) Sie haben ziemlich viel Glück. Dieses Glas ist schlecht programmiert. Überprüfen Sie, ob es auf eine andere. R-Datei in einem anderen Paket zeigt. Sie könnten auch versuchen extrahiere das .R mit irgendeinem decompiler, dann versuche es zu bearbeiten und setze es zurück – Reaper

+0

Ich habe versucht, aber der dekompilierte Code wird nicht neu kompiliert, da er eine schlechte Syntax verwendet = – Addev

Verwandte Themen