Autore Topic: primi passi, crash su getResources()  (Letto 895 volte)

Offline MXtreme

  • Nuovo arrivato
  • *
  • Post: 5
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Windows Vista
primi passi, crash su getResources()
« il: 02 Agosto 2011, 14:29:46 CEST »
0
Salve a tutti.
Sto ancora muovendo i primi passi e sto cercando di recuperare le risorse dalla classe R, ma sfortunatamente l'applicazione crasha alla riga

Codice (Java): [Seleziona]
final String outputLabel=this.getResources().getString(R.string.output_label);
con un NullPointerException sulla funzione getResources. (così sembra dire il logcat).

di seguito vi posto gli xml  e la classe R

strings.xml
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">MainActivity</string>
    <string name="hello">Hello</string>
    <string name="app_title">Button Counter</string>
    <string name="button_label">Press</string>
    <string name="output_label">Numero Click:</string>
    <string-array name="myArray">
        <item>Valore 1</item>
        <item>Valore 2</item>
        <item>Valore 3</item>
    </string-array>
    <integer-array name="primeArray">
        <item>1</item>
        <item>2</item>
        <item>3</item>
        <item>5</item>
        <item>7</item>
        <item>11</item>
    </integer-array>
</resources>

AndroidManifest.xml

Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="it.helloandroid.peb"
     android:versionCode="1"
     android:versionName="1.0">
    <application android:label="@string/app_name" android:icon="@drawable/icon">
        <activity android:name="MainActivity"
                 android:label="@string/app_title">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

R
Codice (Java): [Seleziona]
public final class R {
    public static final class array {
        public static final int myArray=0x7f050000;
        public static final int primeArray=0x7f050001;
    }
    public static final class attr {
    }
    public static final class drawable {
        public static final int icon=0x7f020000;
    }
    public static final class id {
        public static final int output=0x7f060000;
        public static final int pressButton=0x7f060001;
    }
    public static final class layout {
        public static final int main=0x7f030000;
    }
    public static final class string {
        public static final int app_name=0x7f040000;
        public static final int app_title=0x7f040002;
        public static final int button_label=0x7f040003;
        public static final int hello=0x7f040001;
        public static final int output_label=0x7f040004;
    }
}

Grazie

Offline Gigiuz

  • Utente normale
  • ***
  • Post: 187
  • Respect: +23
    • Google+
    • gigiuzzo81
    • Gigiuz81
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Note III
  • Play Store ID:
    GGXSoft
  • Sistema operativo:
    Windows 7 64bit, OS X (virtualized), Ubuntu
Re:primi passi, crash su getResources()
« Risposta #1 il: 02 Agosto 2011, 14:35:55 CEST »
0
Quello che hai postato non è sufficiente per capire dov'è il problema. Dovresti postare la parte di codice che contiene questo:

Codice (Java): [Seleziona]
final String outputLabel=this.getResources().getString(R.string.output_label);
Immagino che sia un'Activity, ed è necessario sapere come l'hai strutturata...
Hai bisogno di implementare un sistema di "codici seriali di sblocco" nella tua applicazione? Dai un'occhiata alla mia libreria: RemoteUnlocker

Offline Nicola_D

  • Moderatore
  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:primi passi, crash su getResources()
« Risposta #2 il: 02 Agosto 2011, 14:40:04 CEST »
+1
quasi sicuramente hai dichiarato la variabile con scope di classe e la inizializzi li. Non è possibile perchè il getResources non funziona.
Devi mettere l'inizializzazione della variabile nella onCreate
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline MXtreme

  • Nuovo arrivato
  • *
  • Post: 5
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Windows Vista
Re:primi passi, crash su getResources()
« Risposta #3 il: 02 Agosto 2011, 14:40:59 CEST »
0
oops, l'ho dimenticato  :-o è all'inizio tra gli attributi. GRAZIE

Codice (Java): [Seleziona]
package it.helloandroid.peb;

import android.app.Activity;
import android.view.View.OnClickListener;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.content.ContextWrapper;

public class MainActivity extends Activity{

    private int counter = 0;
    final String outputLabel=this.getResources().getString(R.string.output_label);
    //final int primeNumbers[]=getResources().getIntArray(R.array.primeArray);
    //final String[] labels=getResources().getStringArray(R.array.myArray);
   
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Button pressButton = (Button) findViewById(R.id.pressButton);
        final TextView outputView = (TextView) findViewById(R.id.output);
        pressButton.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                outputView.setText("Click # " + counter++);
            }
        });
    }
}

EDIT: è un pulsante con contatore. outputLabel nemmeno l'ho usata ancora. Però se non la inizializza nemmeno sono a piedi  :-(
« Ultima modifica: 02 Agosto 2011, 14:43:45 CEST da MXtreme »

Offline MXtreme

  • Nuovo arrivato
  • *
  • Post: 5
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Windows Vista
Re:primi passi, crash su getResources()
« Risposta #4 il: 02 Agosto 2011, 14:49:02 CEST »
0
quasi sicuramente hai dichiarato la variabile con scope di classe e la inizializzi li. Non è possibile perchè il getResources non funziona.
Devi mettere l'inizializzazione della variabile nella onCreate

Ecco dove stava il problema. Dimmi se ho capito bene. getResources non funziona perchè in quel punto l'Activity non esiste ancora e le risorse non sono inizializzate?

Offline Gigiuz

  • Utente normale
  • ***
  • Post: 187
  • Respect: +23
    • Google+
    • gigiuzzo81
    • Gigiuz81
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Note III
  • Play Store ID:
    GGXSoft
  • Sistema operativo:
    Windows 7 64bit, OS X (virtualized), Ubuntu
Re:primi passi, crash su getResources()
« Risposta #5 il: 02 Agosto 2011, 14:55:07 CEST »
0
Ecco dove stava il problema. Dimmi se ho capito bene. getResources non funziona perchè in quel punto l'Activity non esiste ancora e le risorse non sono inizializzate?

Sì, grossomodo è così: tempo fa c'è stata una digressione riguardo alla esistenza o meno dell'activity durante la definizione di variabili membro con riferimento all'oggetto Activity creato. In realtà l'oggetto istanza di Activity ESISTE ma non è possibile utilizzare in quel punto qualsiasi riferimento a strutture Android (come il getResource()).
« Ultima modifica: 02 Agosto 2011, 14:57:30 CEST da gGx »
Hai bisogno di implementare un sistema di "codici seriali di sblocco" nella tua applicazione? Dai un'occhiata alla mia libreria: RemoteUnlocker

Offline MXtreme

  • Nuovo arrivato
  • *
  • Post: 5
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Windows Vista
Re:primi passi, crash su getResources()
« Risposta #6 il: 02 Agosto 2011, 14:58:16 CEST »
0
Sì, grossomodo è così

ahah "grossomodo"  :D
va be, grazie mille per l'aiuto. problema RISOLTO (per ora)

Offline Nicola_D

  • Moderatore
  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:primi passi, crash su getResources()
« Risposta #7 il: 02 Agosto 2011, 14:59:01 CEST »
0
Ecco dove stava il problema. Dimmi se ho capito bene. getResources non funziona perchè in quel punto l'Activity non esiste ancora e le risorse non sono inizializzate?
vedila cosi: le risorse vengono prese dal Context, che in quel momento è ancora a null e quindi viene lanciata eccezione.
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia