Salve, ho un problema di programmazione molto semplice ma che mi sta facendo uscire di testa.
Ho comprato il libro di Massimo Carli sulla programmazione con Android e al capitolo 3 c'è un esempio di uso dei colori. Sull'esempio viene spiegato come cambiare il colore di sfondo del LinearLayout principale. Ho modificato il codice in modo che venga fatto in automatico all'avvio invece che farlo prima della compilazione:
File ResourceColorActivity.java
codice:
package it.apogeo.android.cap03.resourcecolor;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.LinearLayout;
public class ResourceColorActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
LinearLayout l = (LinearLayout) findViewById(R.layout.main);
int rosso_tra = getResources().getColor(R.color.red_transparent);
l.setBackgroundColor(rosso_tra);
}
}
File R.java
codice:
package it.apogeo.android.cap03.resourcecolor;
public final class R {
public static final class attr {
}
public static final class color {
public static final int blue=0x7f040002;
public static final int green=0x7f040001;
public static final int red=0x7f040000;
public static final int red_transparent=0x7f040003;
}
public static final class drawable {
public static final int icon=0x7f020000;
}
public static final class layout {
public static final int main=0x7f030000;
}
public static final class string {
public static final int app_name=0x7f050001;
public static final int hello=0x7f050000;
public static final int label=0x7f050002;
}
}
File colors.xml (specifica i colori)
codice:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="red">#ff0000</color>
<color name="green">#00ff00</color>
<color name="blue">#0000ff</color>
<color name="red_transparent">#66ddccdd</color>
</resources>
Il programma compila e parte ma all'avvio ottengo una schermata di errore intitoolata "Sorry" e che riporta questo messaggio:
The application ResourceColor (process it.apogeo.android.cap03.resourcecolor) has stopped unexpectedly. Please try again.
Ho scoperto che se commento la riga
codice:
l.setBackgroundColor(rosso_tra);
nel file ResourceColorActivity.java l'errore scompare ma ovviamente l'applicazione non fa nulla.
Qualcuno sa dirmi perchè si verifica questo errore?
Uso Eclipse con ADT e un simulatore froyo (Android 2.2 - API Level 8).