Fragen zu Java

CT9288

Mitglied
Hallo ihr Lieben.
Nachdem ich meine erste App veröffentlicht habe (nicht erwähnenswert, da sowieso kein Erfolg) und ich mir eine Pause gegönnt habe, bin ich nun wieder an den Start gegangen. Jetzt arbeite ich an meiner zweiten App, es soll eine kleine, informative App sein, mehr nicht. Aber im Rahmen des Ganzen kamen mir wieder Fragen, auf die ich so keine Antwort finde.

1. Frage: Angenommen ich erstelle eine kleine Simulation, ein kleiner Kreis, der Nahrung sucht, sich bewegt, der sich, bei einer bestimmten Nährstoffkonzentration teilt, in zwei Individuen. Angenommen die Menge an Individuen it auf 100 begrenzt, wie sähe das Theoretisch aus? Müsste für jedes Individuum eine separate Datei vorhanden sein, die man bei Bedarf Aktivieren oder deaktivieren kann? Ich denke da z.B. an die App Cell Lab, bei der sich eine Zelle in endlos viele teilt. Was ist der Zauber dahinter?

2. Frage: das mit den Activities bei Android Studio finde ich interessant, man ruft eine neue Activity und beendet die Alte. Soetwas hatte ich bei Netbeans nicht. Ist das AS Spezifisch? Oder lässt sich sowas auch in Netbeans und ähnliche impementieren?

3. Frage: Wenn ich ein Point und Click adventure erstellen würde, wie kann ich z.B. das Bild eines Raumes als Hintergrund plazieren, und dann im Vordergrund transparente ImageButtons plazieren, auf die man clickt, um einen Gegenstand zu finden? Also genauer, wie schafft man es, dass die Kästchen immer dort bleiben, wo auch die richtige Stelle im Bild wäre? Manchmal verschieben sich Positionen, je nach Endgerät. Kann man soetwas an ein Bild "tackern"?

Danke erst mal im Voraus. Ich bin gespannt =)
 

mihe7

Top Contributor
2. Frage: das mit den Activities bei Android Studio finde ich interessant, man ruft eine neue Activity und beendet die Alte. Soetwas hatte ich bei Netbeans nicht. Ist das AS Spezifisch? Oder lässt sich sowas auch in Netbeans und ähnliche impementieren?
Das hat nichts mit der IDE zu tun. So arbeitet Android.

Müsste für jedes Individuum eine separate Datei vorhanden sein, die man bei Bedarf Aktivieren oder deaktivieren kann?
Wieso Datei? Jedes Individuum ist ein Objekt, oder verstehe ich Dich falsch?

Manchmal verschieben sich Positionen, je nach Endgerät. Kann man soetwas an ein Bild "tackern"?
Man kann immer mit fixen Positionen arbeiten. S. auch https://developer.android.com/training/custom-views/custom-drawing
 

White_Fox

Top Contributor
1. Frage: Angenommen ich erstelle eine kleine Simulation, ein kleiner Kreis, der Nahrung sucht, sich bewegt, der sich, bei einer bestimmten Nährstoffkonzentration teilt, in zwei Individuen. Angenommen die Menge an Individuen it auf 100 begrenzt, wie sähe das Theoretisch aus? Müsste für jedes Individuum eine separate Datei vorhanden sein, die man bei Bedarf Aktivieren oder deaktivieren kann? Ich denke da z.B. an die App Cell Lab, bei der sich eine Zelle in endlos viele teilt. Was ist der Zauber dahinter?
Also...ICH würde mir eine Klasse schreiben und das Verhalten einer Zelle in dieser implementieren.
 

CT9288

Mitglied
Okay, erst mal vielen Dank für eure Antworten.

Ich bräuchte mal wieder Hilfe. Es geht um ein Problem, dass zwar aktuell keine Schwierigkeiten macht, aber langfristig schon, und ich sitze jetzt bestimmt schon seit 2 Stunden daran zu Googeln und zu wurschteln und was weiß ich, ich habe Codes auskommentiert, Fehlerquellen isoliert, habe die betroffenen Code-Zeilen mal in den Constructor genommen, mal draußen gelassen, aber ich raffe einfach nicht, was das Problem ist.

Android Studio

Aktuell ist es immer so, dass wenn ich per "cardName[1] = App.getContext().getString(R.string.card1);"

immer einen Null-Pointer-Fehler erhalte, obwohl in der IDE der String als Text angezeigt wird (also muss ja irgendwas ankommen), in der App allerdings führt es zum Absturz und zu gesagter Fehlermeldung. Wenn ich den Zugriff auf die Strings weglasse, und einfach etwas schreibe wie cardName[1] = "Herz Dame";
Dann gibt es kein Problem.
Internet sagt, womöglich erhält man den Nullpointer, weil die Variable, der String, zwar da sei, aber zum Zeitpunkt des Zugriffs nicht initialisiert.
Aber ich komme. nicht. weiter. Seit mindestens zwei stunden. Ich bin jetzt wie gesagt dazu übergegangen, die Strings handschriftlich zu ersetzen, aber langfristig muss das laufen, da die App bilingual werden soll.
Was mache ich nur falsch? Braucht ihr etwas spezielles zur Fehleranalyse? Schreibt nur, ich liefer euch dann, ich will nur nicht jetzt schon unnötig zutexten, wenns vielleicht auf der Hand liegt.

Vielen verzweifelten Dank im Voraus T.T
 

mihe7

Top Contributor
Vorausgesetzt, App ist eine Klasse, kann die NPE an der Stelle nur auftreten, wenn zum Zeitpunkt des Ausführung

a) cardName null ist
b) App.getContext() null liefert.

Ansonsten könnte auch App null sein. Das würde ich an Deiner Stelle mal prüfen.
 

CT9288

Mitglied
Okay, ich habe die App.class selbst nicht in erwägung gezogen und mich gleich drann gemacht, aber ich finde ums verrecken meinen Fehler nicht.

Das hier ist der Fehler-Log:

Code:
E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.manticore.manticorekartenlegen, PID: 12424
    java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.manticore.manticorekartenlegen/com.manticore.manticorekartenlegen.SheetActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getString(int)' on a null object reference
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3042)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3282)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1970)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7156)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:975)
     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getString(int)' on a null object reference
        at com.manticore.manticorekartenlegen.CardNames.<init>(CardNames.java:9)
        at com.manticore.manticorekartenlegen.SheetActivity.<init>(SheetActivity.java:13)
        at java.lang.Class.newInstance(Native Method)
        at android.app.AppComponentFactory.instantiateActivity(AppComponentFactory.java:69)
        at androidx.core.app.CoreComponentFactory.instantiateActivity(CoreComponentFactory.java:43)
        at android.app.Instrumentation.newActivity(Instrumentation.java:1219)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3030)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3282) 
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) 
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) 
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1970) 
        at android.os.Handler.dispatchMessage(Handler.java:106) 
        at android.os.Looper.loop(Looper.java:214) 
        at android.app.ActivityThread.main(ActivityThread.java:7156) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:975) 
I/Process: Sending signal. PID: 12424 SIG: 9
Disconnected from the target VM, address: 'localhost:8600', transport: 'socket'

Hier die CardNames.class

Java:
package com.manticore.manticorekartenlegen;

public class CardNames {

    public String[] cardName = new String[53];

    CardNames(){
        cardName[0] = "2 of Hearts";
        cardName[1] = App.getContext().getString(R.string.card1);
//        cardName[2] = App.getContext().getString(R.string.card2);
//        cardName[3] = App.getContext().getString(R.string.card3);
//        cardName[4] = App.getContext().getString(R.string.card4);
//        cardName[5] = App.getContext().getString(R.string.card5);
//        cardName[6] = App.getContext().getString(R.string.card6);
//        cardName[7] = App.getContext().getString(R.string.card7);
//        cardName[8] = App.getContext().getString(R.string.card8);
//        cardName[9] = App.getContext().getString(R.string.card9);
//        cardName[10] = App.getContext().getString(R.string.card10);
//        cardName[11] = App.getContext().getString(R.string.card11);
//        cardName[12] = App.getContext().getString(R.string.card12);
//
//        cardName[13] = App.getContext().getString(R.string.card13);
//        cardName[14] = App.getContext().getString(R.string.card14);
//        cardName[15] = App.getContext().getString(R.string.card15);
//        cardName[16] = App.getContext().getString(R.string.card16);
//        cardName[17] = App.getContext().getString(R.string.card17);
//        cardName[18] = App.getContext().getString(R.string.card18);
//        cardName[19] = App.getContext().getString(R.string.card19);
//        cardName[20] = App.getContext().getString(R.string.card20);
//        cardName[21] = App.getContext().getString(R.string.card21);
//        cardName[22] = App.getContext().getString(R.string.card22);
//        cardName[23] = App.getContext().getString(R.string.card23);
//        cardName[24] = App.getContext().getString(R.string.card24);
//        cardName[25] = App.getContext().getString(R.string.card25);
//
//        cardName[26] = App.getContext().getString(R.string.card26);
//        cardName[27] = App.getContext().getString(R.string.card27);
//        cardName[28] = App.getContext().getString(R.string.card28);
//        cardName[29] = App.getContext().getString(R.string.card29);
//        cardName[30] = App.getContext().getString(R.string.card30);
//        cardName[31] = App.getContext().getString(R.string.card31);
//        cardName[32] = App.getContext().getString(R.string.card32);
//        cardName[33] = App.getContext().getString(R.string.card33);
//        cardName[34] = App.getContext().getString(R.string.card34);
//        cardName[35] = App.getContext().getString(R.string.card35);
//        cardName[36] = App.getContext().getString(R.string.card36);
//        cardName[37] = App.getContext().getString(R.string.card37);
//        cardName[38] = App.getContext().getString(R.string.card38);
//
//        cardName[39] = App.getContext().getString(R.string.card39);
//        cardName[40] = App.getContext().getString(R.string.card40);
//        cardName[41] = App.getContext().getString(R.string.card41);
//        cardName[42] = App.getContext().getString(R.string.card42);
//        cardName[43] = App.getContext().getString(R.string.card43);
//        cardName[44] = App.getContext().getString(R.string.card44);
//        cardName[45] = App.getContext().getString(R.string.card45);
//        cardName[46] = App.getContext().getString(R.string.card46);
//        cardName[47] = App.getContext().getString(R.string.card47);
//        cardName[48] = App.getContext().getString(R.string.card48);
//        cardName[49] = App.getContext().getString(R.string.card49);
//        cardName[50] = App.getContext().getString(R.string.card50);
//        cardName[51] = App.getContext().getString(R.string.card51);
//
//        cardName[52] = App.getContext().getString(R.string.card52);
    }
}

Das hier wäre die App.class

Java:
package com.manticore.manticorekartenlegen;

import android.app.Application;
import android.content.Context;

public class App extends Application {
    
    private static Context mContext;
    
    @Override
    public void onCreate(){
        super.onCreate();
        mContext = this;
    }
    
    public static Context getContext(){
        return mContext;
    }
}

und das hier meine strings.xml

XML:
<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="app_name">Manticore</string>
    <string name="error">Error: please call Support</string>

    <string name="contentMeaningHeadline">Meaning:</string>
    <string name="contentMeaning">Lovers</string>

    <string name="main0">Card Reading</string>
    <string name="main1">Whats behind?</string>
    <string name="main2">Techniques</string>

    <string name="card0">2 of Hearts</string>
    <string name="card1">3 of Hearts</string>
    <string name="card2">4 of Hearts</string>
    <string name="card3">5 of Hearts</string>
    <string name="card4">6 of Hearts</string>
    <string name="card5">7 of Hearts</string>
    <string name="card6">8 of Hearts</string>
    <string name="card7">9 of Hearts</string>
    <string name="card8">10 of Hearts</string>
    <string name="card9">2 of Hearts</string>
    <string name="card10">Jack of Hearts</string>
    <string name="card11">King of Hearts</string>
    <string name="card12">Ace of Hearts</string>

    <string name="card13">2 of Diamonds</string>
    <string name="card14">3 of Diamonds</string>
    <string name="card15">4 of Diamonds</string>
    <string name="card16">5 of Diamonds</string>
    <string name="card17">6 of Diamonds</string>
    <string name="card18">7 of Diamonds</string>
    <string name="card19">8 of Diamonds</string>
    <string name="card20">9 of Diamonds</string>
    <string name="card21">10 of Diamonds</string>
    <string name="card22">Jack of Diamonds</string>
    <string name="card23">Queen of Diamonds</string>
    <string name="card24">King of Diamonds</string>
    <string name="card25">Ace of Diamonds</string>

    <string name="card26">2 of Clubs</string>
    <string name="card27">3 of Clubs</string>
    <string name="card28">4 of Clubs</string>
    <string name="card29">5 of Clubs</string>
    <string name="card30">6 of Clubs</string>
    <string name="card31">7 of Clubs</string>
    <string name="card32">8 of Clubs</string>
    <string name="card33">9 of Clubs</string>
    <string name="card34">10 of Clubs</string>
    <string name="card35">Jack of Clubs</string>
    <string name="card36">Queen of Clubs</string>
    <string name="card37">King of Clubs</string>
    <string name="card38">Ace of Clubs</string>

    <string name="card39">2 of Spades</string>
    <string name="card40">3 of Spades</string>
    <string name="card41">4 of Spades</string>
    <string name="card42">5 of Spades</string>
    <string name="card43">6 of Spades</string>
    <string name="card44">7 of Spades</string>
    <string name="card45">8 of Spades</string>
    <string name="card46">9 of Spades</string>
    <string name="card47">10 of Spades</string>
    <string name="card48">Jack of Spades</string>
    <string name="card49">Queen of Spades</string>
    <string name="card50">King of Spades</string>
    <string name="card51">Ace of Spades</string>

    <string name="card52">Joker</string>

    <string name="cardDescription0">Käsekuchen</string>

    <string name="cardRead0">Käsekuchen</string>
    <string name="cardRead1">Käsekuchen</string>
    <string name="cardRead2">Käsekuchen</string>

    <string name="contentTitle">Blank</string>
    <string name="contentBlank">Hier könnte ein Text stehen. Hier könnte ein Text stehen. Hier könnte ein Text stehen. Hier könnte ein Text stehen.</string>
</resources>

Was bräuchte an mehr? Ab der zweiten cardName[] sind alle auskommentiert, da es bereits ab cardName[1] nicht läuft und ich den Fehler bekomme. Ich raffs nicht...
 

mihe7

Top Contributor
Bei einer Activity (hier: SheetActivity) darfst Du Dinge, die das Framework betreffen, nicht im Konstruktor verwenden/initialisieren. Dafür gibt es z. B. den Activity-Lifecycle. Initialisiere z. B. in onCreate.
 

CT9288

Mitglied
Hm, das Problem ist, ich hab in der SheetActivity nichts in einem Konstruktor.
Weißt du, ich habe Wochen, Monate an meiner ersten App gesessen und diese sogar zum funktionieren gebracht und in den Playstore geladen...und DENNOCH verstehe ich gerade mal die Hälfte dessen, was du versucht hast, mir zu sagen 😓 es ist so ärgerlich

Java:
package com.manticore.manticorekartenlegen;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.widget.ImageView;
import android.widget.TextView;

public class SheetActivity extends AppCompatActivity {

    private CardReadActivity cra = new CardReadActivity();
    private Cards crd = new Cards();
    private CardNames crdNames = new CardNames();
    private CardDescriptions crdDescr = new CardDescriptions();

    private ImageView imgCardHolder;
    private TextView textCardTitle, textCardContent;

    private int resIDA;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sheet);

        textCardTitle = findViewById(R.id.textCardTitle);
        textCardContent = findViewById(R.id.textCardContent);
        imgCardHolder = findViewById(R.id.imgCardHolder);

        WhichCard();
    }

    public void WhichCard(){
        textCardTitle.setText(crdNames.cardName[cra.cardCount]);
        resIDA = getResources().getIdentifier(crd.card[cra.cardCount], "drawable", getPackageName());
        imgCardHolder.setImageResource(resIDA);
        textCardContent.setText(crdDescr.cardDescription[cra.cardCount]);
    }

}
 

mihe7

Top Contributor
Hm, das Problem ist, ich hab in der SheetActivity nichts in einem Konstruktor.
Du initialisierst die Variablen aber auf "Klassenebene":
private CardReadActivity cra = new CardReadActivity(); private Cards crd = new Cards(); private CardNames crdNames = new CardNames(); private CardDescriptions crdDescr = new CardDescriptions();
Das ist im Prinzip nichts anderes, als würde die Initialisierung im Konstruktor stehen.

Pack die Initialisierungen (new ...) mal alle in die onCreate-Methode.

und DENNOCH verstehe ich gerade mal die Hälfte dessen, was du versucht hast, mir zu sagen 😓 es ist so ärgerlich
Ohne den Activity-Lifecycle zu kennen bzw. zu verstehen, ist es sinnlos, Android-Programme zu schreiben. Selbst mit dessen Kenntnis ist die Android-Programmierung strange :)
 

CT9288

Mitglied
Java:
package com.manticore.manticorekartenlegen;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.widget.ImageView;
import android.widget.TextView;

public class SheetActivity extends AppCompatActivity {

    private CardReadActivity cra;
    private Cards crd;
    private CardNames crdNames;
    private CardDescriptions crdDescr;

    private ImageView imgCardHolder;
    private TextView textCardTitle, textCardContent;

    private int resIDA;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sheet);

        new CardReadActivity();
        new Cards();
        new CardNames();
        new CardDescriptions();

        textCardTitle = findViewById(R.id.textCardTitle);
        textCardContent = findViewById(R.id.textCardContent);
        imgCardHolder = findViewById(R.id.imgCardHolder);

        WhichCard();
    }

    public void WhichCard(){
        textCardTitle.setText(crdNames.cardName[cra.cardCount]);
        resIDA = getResources().getIdentifier(crd.card[cra.cardCount], "drawable", getPackageName());
        imgCardHolder.setImageResource(resIDA);
        textCardContent.setText(crdDescr.cardDescription[cra.cardCount]);
    }

}

So inetwa? Bekomme den gleichen Fehler nach wie Vor T.T
Das ärgerliche ist, ich guck mir oft meine erste App an, die ähnlich aufgebaut ist, und bei der musste ich vieles davon nicht machen. Weder bei onCreate initialisieren noch anderes. Da kam dieses Problem nicht.

Ich hab mir was überlegt. Da ich zwar jede Hilfe gerne annehme, aber auch nicht untätig auf Hilfe warten möchte, werde ich die Tage eine Kopie der App erstellen, alles rauslöschen was geht und das Problem herauskristallisieren, dann werd ichs weiter versuchen. Dann kann ich auch mehr Code posten, ohne dass es unübersichtlich wird...
Erstmal vielen Dank euch allen
 
Zuletzt bearbeitet:

mihe7

Top Contributor
new CardReadActivity();
new Cards();
new CardNames();
new CardDescriptions();
Damit erzeugst Du neue Objekte, die musst Du schon auch Deinen Variablen zuweisen:
Java:
cra = new CardReadActivity(); 
crd = new Cards();
crdNames = new CardNames();
crdDescr = new CardDescriptions();
 

CT9288

Mitglied
Ohman. Ich befolge eure Hilfsangebote so gut es mir möglich ist. Ich habe meine App jetzt soweit auf das nötigste reduziert und bekomme nach wie vor diese Fehlermeldungen:
Code:
Process: com.manticore.manticorekartenlegen, PID: 16530
    java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.manticore.manticorekartenlegen/com.manticore.manticorekartenlegen.SheetActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getString(int)' on a null object reference
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3042)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3282)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1970)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7156)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:975)
     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getString(int)' on a null object reference
        at com.manticore.manticorekartenlegen.CardNames.<init>(CardNames.java:8)
        at com.manticore.manticorekartenlegen.SheetActivity.<init>(SheetActivity.java:18)
        at java.lang.Class.newInstance(Native Method)
        at android.app.AppComponentFactory.instantiateActivity(AppComponentFactory.java:69)
        at androidx.core.app.CoreComponentFactory.instantiateActivity(CoreComponentFactory.java:43)
        at android.app.Instrumentation.newActivity(Instrumentation.java:1219)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3030)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3282) 
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) 
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) 
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1970) 
        at android.os.Handler.dispatchMessage(Handler.java:106) 
        at android.os.Looper.loop(Looper.java:214) 
        at android.app.ActivityThread.main(ActivityThread.java:7156) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:975)

Es geht also nach wie vor darum, einen Fehler beim Zugriff auf die Strings zu beheben, oder?
Meine dateien sehen wie Folgt aus:

Java:
package com.manticore.manticorekartenlegen;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;

public class MainActivity extends AppCompatActivity {

    public int cardCount;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        cardCount = 0;
    }

    public void SheetActivity(View v) {
        Intent i = new Intent(this, SheetActivity.class);
        startActivity(i);
        overridePendingTransition(0, 0);
        i.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
    }

    public void CallHeart2(View v) {
        cardCount = 0;
        SheetActivity(v);
    }
}

Java:
package com.manticore.manticorekartenlegen;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.widget.ImageView;
import android.widget.TextView;

public class SheetActivity extends AppCompatActivity {

    private MainActivity cra;
    private Cards crd;
    private CardNames crdNames;
    private CardDescriptions crdDescr;

    private ImageView imgCardHolder;
    private TextView textCardTitle, textCardContent;

    private int resIDA;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sheet);

        cra = new MainActivity();
        crd = new Cards();
        crdNames = new CardNames();
        crdDescr = new CardDescriptions();

        textCardTitle = findViewById(R.id.textCardTitle);
        textCardContent = findViewById(R.id.textCardContent);
        imgCardHolder = findViewById(R.id.imgCardHolder);

        WhichCard(crdNames.cardName, crd.card, crdDescr.cardDescription, cra.cardCount);
    }

    public void WhichCard(String[] name, String[] card, String[] description, int count){
        textCardTitle.setText(name[count]);
        resIDA = getResources().getIdentifier(card[count], "drawable", getPackageName());
        imgCardHolder.setImageResource(resIDA);
        textCardContent.setText(description[count]);
    }

}

Java:
package com.manticore.manticorekartenlegen;

import android.app.Application;
import android.content.Context;

public class App extends Application {
    
    private static Context mContext;
    
    @Override
    public void onCreate(){
        super.onCreate();
        mContext = this;
    }
    
    public static Context getContext(){
        return mContext;
    }
}

Und hier noch die drei Card.classes die die String-Infos enthalten, alle zusammengefasst, also nicht wundern.

Java:
Cards.java:
package com.manticore.manticorekartenlegen;

public class Cards {

    public String[] card = new String[1];

    Cards(){
        card[0] = "card_herz_2";
    }
}

CardNames.java:
package com.manticore.manticorekartenlegen;

public class CardNames {

    public String[] cardName = new String[1];

    CardNames(){
        cardName[0] = App.getContext().getString(R.string.card0);
    }
}

CardDescriptions.java:
package com.manticore.manticorekartenlegen;

public class CardDescriptions {

    public String[] cardDescription = new String[1];

    CardDescriptions(){
        cardDescription[0] = App.getContext().getString(R.string.cardExplanation0);
    }

}


Ich verstehe es nicht, ich sitze hier seit stunden, auch mit eurer Hilfe. So große Probleme hatte ich bei meiner ersten App nicht, hat sich vielleicht der Duktus in Android Studio irgendwie geändert? Benutze ich irgendwas veraltetes? o_O
 

mihe7

Top Contributor
at com.manticore.manticorekartenlegen.SheetActivity.<init>(SheetActivity.java:18)
Irgendwas stimmt da nicht, Zeile 18 ist die Leerzeile zwischen
Code:
private TextView textCardTitle, textCardContent;
und
Code:
private int resIDA;

Mach mal ein Rebuild.
 

CT9288

Mitglied
Habe einen Rebuild gemacht. Ich habs eben gelesen, damals war der Fehler auf Zeile 18, das wundert mich jetzt immernoch, denn tatsächlich wird der Fehler weiterhin in Zeile 28 angegeben.

at com.manticore.manticorekartenlegen.CardNames.<init>(CardNames.java:8)
at com.manticore.manticorekartenlegen.SheetActivity.onCreate(SheetActivity.java:28)

Es hat sich nichts groß geändert. Gibt es keinen anderen Weg, um auf Ressourcen zuzugreifen?
 

CT9288

Mitglied
Ich habe euch nicht vergessen, verzeihung, aber wir ziehen gerade um und haben viel zu renovieren, dann noch mit kleinem Kind, viel Chaos.

Ja, super peinlich. Es lag letzten Endes an der Manifest... die ganze Mühe wegen sowas kleinem. Aber dennoch vielen Dank für eure Hilfe und Unterstützung. Die App funktioniert soweit, aber weiterarbeiten ist erst mal schwierig.
Mit Freundlichen Grüßen
Ich.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Java Anfänger mit konkreten Fragen Java Basics - Anfänger-Themen 2
J Fragen zum Code aus dem Buch "Schrödinger programmiert Java 2.te Ausgabe" Java Basics - Anfänger-Themen 6
J Erste Schritte Oracle Tutorials zu Java 8 - Fragen dazu Java Basics - Anfänger-Themen 1
H Java Quereinsteiger Roadmap und Fragen Java Basics - Anfänger-Themen 29
B Java ist / wird kostenpflichtig. Ein paar Fragen Java Basics - Anfänger-Themen 1
B Java Vererbung Fragen (zu Code Beispiel) Java Basics - Anfänger-Themen 3
Azazel Ein paar Fragen zu Methodenaufrufen(java.awt) Java Basics - Anfänger-Themen 2
J Verschieden Fragen über Java Programmierung Java Basics - Anfänger-Themen 3
S Java Fragen Konstruktor & Statische Methoden Java Basics - Anfänger-Themen 4
C Java Applet Fragen: Serialisierung, Excel import Java Basics - Anfänger-Themen 2
T Ein paar Fragen zu OOP und Java. Java Basics - Anfänger-Themen 16
N Java Fragen... Java Basics - Anfänger-Themen 10
B Erste Schritte Generelle Fragen zu Java / Greenfoot. Java Basics - Anfänger-Themen 8
K Java Anfänger und paar Fragen=D Java Basics - Anfänger-Themen 7
S Viele Fragen von einem Anfänger in Java Java Basics - Anfänger-Themen 2
T Fragen vom Java Anfänger Java Basics - Anfänger-Themen 8
D JAVA AWT Fragen und Probleme Java Basics - Anfänger-Themen 15
J [Neuling] Allgemeine Fragen zu Java Java Basics - Anfänger-Themen 20
C Java Übung Fragen Java Basics - Anfänger-Themen 3
typo3agentur Fragen zur OOP in Java Java Basics - Anfänger-Themen 3
V Java Fenster, einige Probleme und Fragen Java Basics - Anfänger-Themen 5
A Allgemeine Fragen zu Java Java Basics - Anfänger-Themen 7
X Objektorientierte Java Programmierung - 3 Fragen zum Code Java Basics - Anfänger-Themen 5
G Java Verstaendnis ? und einige Fragen Java Basics - Anfänger-Themen 4
B Fragen aus einem worddokument in Java einbinden Java Basics - Anfänger-Themen 9
0x7F800000 Ein paar noob-fragen zu java ME Java Basics - Anfänger-Themen 5
D Fragen zu Java-Generics Java Basics - Anfänger-Themen 2
J Fragen zu java Kurs Java Basics - Anfänger-Themen 2
P Fragen nach 12 monatiger Java Pause :P Java Basics - Anfänger-Themen 21
D Einige Fragen zu Java Java2D JDBC usw. XD Java Basics - Anfänger-Themen 13
A Allgemeine Fragen zu Java Java Basics - Anfänger-Themen 10
A In Java zeichnen - Fragen Java Basics - Anfänger-Themen 4
Zrebna Fragen zu einem Klassendiagramm Java Basics - Anfänger-Themen 8
H Fragen zu Wrapperklassen Java Basics - Anfänger-Themen 29
S Best Practice Fragen zu Projektstruktur einer Datenbank-Abfrage-App (MVC) Java Basics - Anfänger-Themen 13
A Bei VierGewinnt fragen ob man gegen CPU oder Menschen spielen will. Java Basics - Anfänger-Themen 7
A Bei VierGewinnt vorher fragen, ob man gegen den Computer spielen möchte oder gegeneinander. Java Basics - Anfänger-Themen 1
A Bei VierGewinnt fragen, ob man gegen den Computer spielen möchte oder gegeneinander Java Basics - Anfänger-Themen 1
sserio Wie kann man nach einer Klasse fragen? Java Basics - Anfänger-Themen 12
G Fragen zu Kompelierfehler in Aufgabe. Java Basics - Anfänger-Themen 25
E Bäume/ allgemeine Fragen Java Basics - Anfänger-Themen 21
O Falsche Antworten zu Fragen Java Basics - Anfänger-Themen 4
S Diverse Fragen vor Schulaufgabe ;) Java Basics - Anfänger-Themen 4
S Fragen zu Ausgabe double und float Java Basics - Anfänger-Themen 3
B fragen zu Aufbau eines UML-Klassendiagramm Java Basics - Anfänger-Themen 1
C 3 Fragen rund um Klassenattribute Java Basics - Anfänger-Themen 8
L Erste Schritte Log4J Fragen Java Basics - Anfänger-Themen 5
NeoLexx Fragen zu diversen Elementen der Javabibliothek Java Basics - Anfänger-Themen 5
D Budget Manager fragen zur Umsetzung Java Basics - Anfänger-Themen 9
N Fragen zur Datenspeicherung Java Basics - Anfänger-Themen 45
W Fragen zu Generics Java Basics - Anfänger-Themen 14
T ObjectInput/OutputStream Fragen zur Funktionsweise Java Basics - Anfänger-Themen 3
J Fragen zu einer Methode Java Basics - Anfänger-Themen 3
Z Fragen zu Exception (Throws/throw) Java Basics - Anfänger-Themen 7
J Fragen zu Input/Output Java Basics - Anfänger-Themen 3
H fragen Java Basics - Anfänger-Themen 15
M Samelsarium Grundlegender Fragen 2 Java Basics - Anfänger-Themen 9
M Sammelsarium an Grundlagen Grundlagen Fragen Java Basics - Anfänger-Themen 11
J Fragen zu synrchonized und kritischen Abschnitten Java Basics - Anfänger-Themen 5
S Fragen zu einem Rechentrainer Java Basics - Anfänger-Themen 2
J Wo kann man Fragen zu ireport stellen. Java Basics - Anfänger-Themen 0
M Fragen zum Anlegen und Benutzen von Listen Java Basics - Anfänger-Themen 9
G Ein paar Anfänger Fragen zu StdDraw Java Basics - Anfänger-Themen 4
D Fragen zur Klassen Java Basics - Anfänger-Themen 4
Aprendiendo Zwei Fragen und ein geerbtes "protected"-Attribut Java Basics - Anfänger-Themen 2
J Interface Fragen bezüglich "Sauberkeit" von Code Java Basics - Anfänger-Themen 5
D Objekte-Fragen Java Basics - Anfänger-Themen 1
V Erste Schritte Habe Fragen zu der For und While Schleife als auch Inkrement und Dekrement Java Basics - Anfänger-Themen 4
D Anfänger-Fragen(Parameter einer Methode) Java Basics - Anfänger-Themen 7
K Zwei Fragen zu Graphics/Graphics2D Java Basics - Anfänger-Themen 5
R Fragen über den Konstruktor Java Basics - Anfänger-Themen 0
S Erste Schritte Fragen zur For-Schleife Java Basics - Anfänger-Themen 9
C Interface Fragen zum Interface Java Basics - Anfänger-Themen 7
GreenTeaYT Exception und zur OOP fragen? Java Basics - Anfänger-Themen 3
C Fragen zum Spigot Plugin (1.8) Java Basics - Anfänger-Themen 6
J Fragen zu Exceptions Java Basics - Anfänger-Themen 24
N Quiz- Fragen zufällig anzeigen lassen Java Basics - Anfänger-Themen 7
L Viele Fragen zu den Grundlagen Java Basics - Anfänger-Themen 5
B Fragen zu ZIP-File Java Basics - Anfänger-Themen 9
L fragen zu arrays Java Basics - Anfänger-Themen 8
L Fragen zu selbstgeschriebenem Programm Java Basics - Anfänger-Themen 5
M Fragen zum Auslesen von HTML Seiten Java Basics - Anfänger-Themen 5
J Threading-Aufgabe. Totale Noob Fragen, aber bitte trotzdem beantworten ;) Java Basics - Anfänger-Themen 7
K Erste Schritte Frage Antwort Spiel - Fragen zur Planung Java Basics - Anfänger-Themen 2
Anfänger2011 2 kleine Fragen zu ArrayListen Java Basics - Anfänger-Themen 5
S Fragen zu Ausdrücken&Bedingungen Java Basics - Anfänger-Themen 5
A 2 kurze Anfänger fragen Java Basics - Anfänger-Themen 6
H grundlegende Fragen Java Basics - Anfänger-Themen 3
V Interface ich schäme mich das zu fragen, aber ich schaff nicht ein Text zu zentrieren :( [javaFX] Java Basics - Anfänger-Themen 6
N Programm: Fragen beantworten Java Basics - Anfänger-Themen 6
C Anfänger Anfänger Fragen Java Basics - Anfänger-Themen 8
Z Compiler-Fehler LinkedList Fragen Java Basics - Anfänger-Themen 4
D Rekursion Allgemeine Fragen Java Basics - Anfänger-Themen 2
D [Fragen] zu Methoden Java Basics - Anfänger-Themen 2
S Fragen zur Implementierung eines Binärbaums Java Basics - Anfänger-Themen 3
J Allgemeine Fragen zur GUI Java Basics - Anfänger-Themen 1
johnnydoe Erste Schritte Erster Blick - erste Fragen Java Basics - Anfänger-Themen 11
DStrohma Grundsätzliche Fragen zu Drag & Drop Java Basics - Anfänger-Themen 1
N Klassen fragen zur getter und setter methode Java Basics - Anfänger-Themen 11
S 3 Fragen, Verzeichnis, GridLayout psoitionieren, Werte für JSpinner Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben