Autore Topic: R.drawable con variabile...si può fare?  (Letto 441 volte)

Offline smartgatto

  • Utente junior
  • **
  • Post: 97
  • Respect: +3
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S5
  • Sistema operativo:
    Windows 7
R.drawable con variabile...si può fare?
« il: 29 Luglio 2015, 16:24:55 CEST »
0
Ciao a tutti...
una domanda... nel mio codice recupero tramite intent dall'activity principale una stringa (xxxx) vorrei settare un'immagine con il comando setImageResource(R.drawable.xxxx); dove xxxx è la stringa recuperata. Come si può fare?
grazie!!

nel mio codice di esempio mi da errore "Error:(20, 42) error: cannot find symbol variable xxxx"

Codice: [Seleziona]
public class fullimage extends Activity {
    ImageView image;

    public void onCreate(Bundle savedInstanceState) {
        Intent myIntent = getIntent();
        String xxxx = myIntent.getStringExtra("immagine"); //recupera il valore di "immagine"
        super.onCreate(savedInstanceState);
        setContentView(R.layout.full_screen_image_activity);
        image = (ImageView) findViewById(R.id.FullScreenImageActivity_fullScreenImageview);


        image.setImageResource(R.drawable.xxxx);
        image.setOnClickListener(new View.OnClickListener() {

            public void onClick(View view) {

            }
        });

    }



}

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:R.drawable con variabile...si può fare?
« Risposta #1 il: 29 Luglio 2015, 16:33:14 CEST »
0
Nella sezione snippets ci sono un paio di righe di codice che spiegano come farlo. Devi solo cercare il post giusto (che ora non ricordo).
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline smartgatto

  • Utente junior
  • **
  • Post: 97
  • Respect: +3
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S5
  • Sistema operativo:
    Windows 7
Re:R.drawable con variabile...si può fare?
« Risposta #2 il: 29 Luglio 2015, 19:04:23 CEST »
0
Ho rovistato in lungo e in largo la sezione snippet ma non ho trovato nulla....

Post unito: 29 Luglio 2015, 19:34:42 CEST
Seguendo alcune pagine su stackoverflow ho modificato il mio listato così ma mi da sempre errore:
Codice: [Seleziona]
07-29 19:28:12.592  11073-11073/marcogiglio.com.ilmondodeisuoni E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: marcogiglio.com.ilmondodeisuoni, PID: 11073
    java.lang.RuntimeException: Unable to start activity ComponentInfo{marcogiglio.com.ilmondodeisuoni/marcogiglio.com.ilmondodeisuoni.fullimage}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ImageView.setImageResource(int)' on a null object reference
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2658)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2723)
            at android.app.ActivityThread.access$900(ActivityThread.java:172)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1422)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:145)
            at android.app.ActivityThread.main(ActivityThread.java:5832)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)
     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ImageView.setImageResource(int)' on a null object reference
            at marcogiglio.com.ilmondodeisuoni.fullimage.onCreate(fullimage.java:23)
            at android.app.Activity.performCreate(Activity.java:6221)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2611)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2723)
            at android.app.ActivityThread.access$900(ActivityThread.java:172)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1422)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:145)
            at android.app.ActivityThread.main(ActivityThread.java:5832)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)

qui il codice:
Codice: [Seleziona]
package marcogiglio.com.ilmondodeisuoni;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;

public class fullimage extends Activity {
    ImageView image;

    public void onCreate(Bundle savedInstanceState) {
        Intent myIntent = getIntent();
        String xxxx = myIntent.getStringExtra("immagine"); //recupera il valore di "immagine"
        super.onCreate(savedInstanceState);
        setContentView(R.layout.full_screen_image_activity);
        int resID = getResources().getIdentifier(xxxx , "drawable", getPackageName());
        image.setImageResource(resID);

        image.setOnClickListener(new View.OnClickListener() {
            public void onClick(View view) {

            }
        });

    }



}
« Ultima modifica: 29 Luglio 2015, 19:34:42 CEST da smartgatto, Reason: Merged DoublePost »

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:R.drawable con variabile...si può fare?
« Risposta #3 il: 29 Luglio 2015, 19:56:19 CEST »
0
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline smartgatto

  • Utente junior
  • **
  • Post: 97
  • Respect: +3
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S5
  • Sistema operativo:
    Windows 7
Re:R.drawable con variabile...si può fare?
« Risposta #4 il: 29 Luglio 2015, 20:10:22 CEST »
0
Dovrebbe essere questo:
Accedere alle risorse usando la stringa del nome - Android Developers Italia

ok, è quello che sto cercando di fare, ma continua a darmi errore:
Codice: [Seleziona]
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ImageView.setImageResource(int)' on a null object reference
            at marcogiglio.com.ilmondodeisuoni.fullimage.onCreate(fullimage.java:18)

Offline CrotaNexus

  • Utente normale
  • ***
  • Post: 156
  • Vuolsi così colà dove si puote ciò che si vuole
  • Respect: +25
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    SimoneDev
  • Sistema operativo:
    Windows 8.1
Re:R.drawable con variabile...si può fare?
« Risposta #5 il: 29 Luglio 2015, 21:44:55 CEST »
0
Stai ottenendo quell'errore perché o non hai istanziato l'ImageView oppure le hai passato un ID sbagliato al findViewById e quindi non la trova all'interno del layout.

Inviato dal mio Nexus 5 con Tapatalk 2

SimoneDev @ Google Play Store

Offline smartgatto

  • Utente junior
  • **
  • Post: 97
  • Respect: +3
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S5
  • Sistema operativo:
    Windows 7
Re:R.drawable con variabile...si può fare?
« Risposta #6 il: 29 Luglio 2015, 22:25:42 CEST »
0
Stai ottenendo quell'errore perché o non hai istanziato l'ImageView oppure le hai passato un ID sbagliato al findViewById e quindi non la trova all'interno del layout.

Inviato dal mio Nexus 5 con Tapatalk 2
cosa intendi esattamente per "istanziare"??

Offline CrotaNexus

  • Utente normale
  • ***
  • Post: 156
  • Vuolsi così colà dove si puote ciò che si vuole
  • Respect: +25
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    SimoneDev
  • Sistema operativo:
    Windows 8.1
Re:R.drawable con variabile...si può fare?
« Risposta #7 il: 29 Luglio 2015, 22:45:05 CEST »
0
Codice (Java): [Seleziona]
ImageView imageView = (ImageView)findViewById(R.id.tuo_id);
Inviato dal mio Nexus 5 con Tapatalk 2
« Ultima modifica: 29 Luglio 2015, 22:48:03 CEST da CrotaNexus »
SimoneDev @ Google Play Store

Offline smartgatto

  • Utente junior
  • **
  • Post: 97
  • Respect: +3
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S5
  • Sistema operativo:
    Windows 7
Re:R.drawable con variabile...si può fare?
« Risposta #8 il: 30 Luglio 2015, 14:45:56 CEST »
0
Codice (Java): [Seleziona]
ImageView imageView = (ImageView)findViewById(R.id.tuo_id);
Inviato dal mio Nexus 5 con Tapatalk 2

Ok era quello che supponevo... ho modificato come segue il mio listato e ora funziona... ho dovuto aggiungere anche la funzione setImageDrawable:

Codice: [Seleziona]
      Intent myIntent = getIntent();
        final String xxxx = myIntent.getStringExtra("immagine"); //recupera il valore di "immagine"
        super.onCreate(savedInstanceState);
        setContentView(R.layout.full_screen_image_activity);
        int resID = getResources().getIdentifier(xxxx , "drawable", getPackageName());
        image = ((ImageView) findViewById(R.id.image));
        Drawable res = getResources().getDrawable(resID);
        image.setImageDrawable(res);

grazie!!
« Ultima modifica: 30 Luglio 2015, 17:27:00 CEST da smartgatto »