Keine Text R.string verlinkung möglich? String[] names = {};

W

whazza

Ambitioniertes Mitglied
7
Hallo ich wollte mit diesen Tutorial mir eine Litsview Seite mit Suche,Bild und Text erstellen was soweit auch ganz gut klappt.
Listview Tutorial

Das einzige was ich nicht hin bekomme ist das ich meine Texte aus der strings.xml nutzen kann egal was ich nutze es geht nicht

Javascript:
String[] names = {R.string.perkablenkungname,};   ///Hier bekomme ich eine Fehlermeldung

String[] names = {getResources().getString(R.string.perkablenkungname),}; ///Hier kommt keine Fehlermeldung sondern die App stürzt einfach ab.

String[] names = {getString(R.string.perkablenkungname),}; ///Auch hier kommt keine Fehlermeldung aber die App stürzt einfach ab.

String[] names = getResources().getStringArray(R.array.namesArray);  /// Auch App absturz ohne Fehlermeldung

<array name="namesArray">
    <item>Item One</item>
    <item>Item Two</item>
    <item>Item Three</item>
</array>

Kann mir da jemand Helfen?
 
Zuletzt bearbeitet:
@whazza

Ein Absturz ohne Errorlog gibt es nicht :)
Würdest du den bitte Posten , dann können wir auch mehr dazu sagen , wo du was falsch definiert hat.

Lass mal erst dein Array weg und nimm dir mal erst einen einzelnen String, damit du sicher bist

P.S. scheint nirgendwo deklariert zu sein : "perkablenkungname"
Mit Teilinformationen können wir leider gar nicht helfen
 
Zuletzt bearbeitet:
Hallo
erstelle auch bitte ein StringArray wenn du eines einlesen willst.
[

Code:
<!- String Array -->
<string-array name="namesArray">
    <item>One</item>
    <item>Two</item>
    <itemThree</item>
</string-array>

String names[] = getResources().getStringArray(R.array.namesArray);


PS. Interessant wäre auch wo in welcher XML Datei du das Array erstellt hast?
in deinen letzen Bz. oder in meinem ist es in der XML "array.xml"
in deinen ersten drei in der "String.xml"
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: swa00
Hi, leider klappt das auch nicht!

swa00 schrieb:
P.S. scheint nirgendwo deklariert zu sein : "perkablenkungname"
In meiner strings.xml ist es drin!

Code:
2020-06-30 19:53:44.364 31118-31118/com.whazza.searchtest E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.whazza.searchtest, PID: 31118
    java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.whazza.searchtest/com.whazza.searchtest.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.Resources android.content.Context.getResources()' on a null object reference
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3259)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3485)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2045)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:223)
        at android.app.ActivityThread.main(ActivityThread.java:7478)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:549)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:941)
     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.Resources android.content.Context.getResources()' on a null object reference
        at android.content.ContextWrapper.getResources(ContextWrapper.java:97)
        at android.view.ContextThemeWrapper.getResourcesInternal(ContextThemeWrapper.java:134)
        at android.view.ContextThemeWrapper.getResources(ContextThemeWrapper.java:128)
        at androidx.appcompat.app.AppCompatActivity.getResources(AppCompatActivity.java:566)
        at com.whazza.searchtest.MainActivity.<init>(MainActivity.java:31)
        at java.lang.Class.newInstance(Native Method)
        at android.app.AppComponentFactory.instantiateActivity(AppComponentFactory.java:95)
        at androidx.core.app.CoreComponentFactory.instantiateActivity(CoreComponentFactory.java:41)
        at android.app.Instrumentation.newActivity(Instrumentation.java:1253)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3247)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3485)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2045)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:223)
        at android.app.ActivityThread.main(ActivityThread.java:7478)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:549)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:941)
 
Zuletzt bearbeitet:
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.Resources android.content.Context.getResources()' on a null object reference

Der Fehler liegt ganz wo anders , du hast in deiner Klasse keinen gültigen Context zu deinen Resourcen
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: jogimuc
Auf meine Frage wo du die Ressource gespeichert hast hasst du nicht geantwortet auch nicht ob du das XML Tag geändert hast.
 
  • Danke
Reaktionen: swa00
Die Ressource ist in src/main/res/values/strings.xml gespeichert.
Die Momentan ist ja nur zum Testen.
In meiner Haupt app habe ich drei Stück für Englisch,Polnisch und Deutsch.

Code:
MainActivity.java
String[] perks = getResources().getStringArray(R.array.namesArray);

strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">SearchView</string>



        <string-array name="namesArray">
                <item>One</item>
                <item>Two</item>
                <item>Three</item>
        </string-array>

</resources>
 
Wenn Sie in der Datei strings ist warum schreibst du dann R.array.namesArray?

Und nicht R.strings.namesArray
 
Zuletzt bearbeitet:
Habe ich versucht klappt ja leider nicht!
 
Glaube ich nicht! mit "s"

Auch deine ersten drei Versuche sind ohne "s"

Schaue nach wie die Datei heißt.
 
Zuletzt bearbeitet:
Eigentlich sollte R.array. Laut Doku richtig sein.
Frage wo in welcher Methode oder auch Block erstellst du denn das Array? Tehma Context. Ich hoffe das du es nicht in einer Callback Listner Methode machst.
 
Im ersten Post habe ich ja das Tutorial beigefügt, so wie es dort ist nutze ich es. Aber anscheinend klappt das dort nicht so ohne weiteres. Listview scheint echt nicht so einfach zu sein wenn man ne Suche, Bilder und Text mit R.string haben mag.
 
@whazza

Listview verwendet man auch nicht mehr , vielmehr ein RecycleView.
Und wenn du mehrere Elemente in einem Tile haben magst , dann musst du dir einen Adapter bauen.

Images in einer längeren Liste müssen auch erst dann geladen werden ,wenn Sie beim Scrollen erscheinen.
Statisch kannst du da auch nichts verwenden.

Hier mal was zum einlesen :

How to use a RecyclerView to show images from storage
 
Werde ich morgen mal schauen danke heute ist genug bin seid heute morgen dran.
In meinen anderen Post hier im Forum da klappt ja alles soweit ausser bei Edittext der als suche gilt nimmt er immer das erste Bild. Irgendwo ist immer was :)
Aber werde es weiter versuchen wird schon irgendwann klappen.
 
In deinem link ist auch nichts von einen stringarry aus einer Ressource zu sehen. Nur statisch direkt erzeugte array.
Ich hoffe mal für dich das du das setzen des Arrays nicht im Klassen Rumpf macht so wie im link. Die Variante kannst du im Klassen Rumpf als Klassen Variable definieren.
Aber setzen bitte in der onCrate.

@swa00 auch wenn mann listView nicht mehr benutzt. Sollte das was er vorhat schon gehen.
In den Beispiel werden die Arrays statisch erzeugt im Klassen Rumpf in den geschweiften Klammern.
Er will jetzt wahrscheinlich genau an der gleichen Stelle das Array aus der Ressource laden. Nur sind eben bei java Android keine statements im Klassen Rumpf möglich.
Das hat er uns leider nicht gezeigt oder gesagt.

Er hatt uns nur die eine Code Zeile genannt aber nicht woh er sie eingefügt hat.

Das habe ich gefragt aber eine Stellung dazu nimmt er leider nicht.
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: whazza und swa00
Ich habe das in der MainActivity.java Zeile 24 versuche wo "Apple","Banana","Kiwi","Oranges","Watermelon" drin steht.
 
Genau und das ist falsch.
Im Rumpf nur das Definieren der Variablen. Setzen Wertzuweisung in der onGreate
Sagte ich bereits.

Schaue Grundlagen java Variablen

Im Klassen Rumpf
String[] perks ;

In der onCreate
perks = getResources().getStringArray(R.array.namesArray);
 
Zuletzt bearbeitet:

Ähnliche Themen

5
Antworten
22
Aufrufe
1.410
590239
5
Vapeilas91
  • Vapeilas91
Antworten
3
Aufrufe
695
swa00
swa00
H
Antworten
4
Aufrufe
605
HTCUserRay
H
Zurück
Oben Unten