Salve ho un problema quando cerco di abilitare un bottone con setEnable(true):
1
2findViewById(R.id.Bottone).setEnabled(true);
3
non capisco perchè ma nel log mi dice fatal exception : main java.lang.NullPointerException.
Salve ho un problema quando cerco di abilitare un bottone con setEnable(true):
1
2findViewById(R.id.Bottone).setEnabled(true);
3
non capisco perchè ma nel log mi dice fatal exception : main java.lang.NullPointerException.
si si !!! :/
Se posti un po' di codice magari qualcuno ti può aiutare, così è un po' difficile indovinare il problema...
1721public class Login extends Activity{
2
3
4
5public void onCreate(Bundle savedInstanceState) {
6
7super.onCreate(savedInstanceState);
8setContentView(R.layout.login);
9
10// Recupero dati dei componenti EditText
11final EditText EditParkcard = (EditText) findViewById(R.id.codiceParkcard);
12final EditText EditCodicePin = (EditText) findViewById(R.id.codicePin);
13
14
15
16//bottone ENTRA
17View.OnClickListener entra = new View.OnClickListener() {
18
19public void onClick(View v) {
20
21System.out.println("click!");
22
23System.out.println("parkcard: "+EditParkcard.getText().toString()+" pin: "+EditCodicePin.getText().toString());
24
25boolean output = new ClientWS().invoke(EditParkcard.getText().toString(),EditCodicePin.getText().toString());
26
27
28
29//se i dati inseriti sono corretti
30if(output){
31//---------------- toast
32Toast toast = Toast.makeText(Login.this,"dati inseriti correttamente!", Toast.LENGTH_SHORT);
33toast.setGravity(Gravity.CENTER, 0, 0);
34toast.show();
35
36
37//salvataggio dati di login all'interno di un file
38String FILENAME = "dati";
39String parkcard = EditParkcard.getText().toString();
40String pin = EditCodicePin.getText().toString();
41
42System.out.println("i dati vengono salvati in: "+getFilesDir());
43System.out.println("la lista dei file salvati: ");
44String[] listaFile = fileList();
45for(int i =0 ; i<listaFile.length ;i++){
46System.out.println(i+1+") "+listaFile[i]);
47}
48
49FileOutputStream fos = null;
50try {
51
52System.out.println("1)creazione apertura del file : ["+FILENAME+"]");
53fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);
54
55} catch (FileNotFoundException e) {
56System.out.println(" - errore creazione/apertura file! -");
57e.printStackTrace();
58}
59try {
60System.out.println("1)scrittura nel file : ["+FILENAME+"] del parkcard:"+parkcard+" e del pin:"+pin);
61fos.write(parkcard.getBytes());
62fos.write(pin.getBytes());
63
64} catch (IOException e) {
65e.printStackTrace();
66System.out.println(" - errore scrittura file! -");
67}
68try {
69System.out.println("1)chiusura del file : ["+FILENAME+"]");
70fos.close();
71} catch (IOException e) {
72System.out.println(" - errore chiusura file! -");
73e.printStackTrace();
74}
75
76
77
78//si devono abilitare i bottoni del MAIN: userInfo,inizioSosta,FineSosta,InfoParcheggio
79
80System.out.println("- abilitazione bottoni in corso...");
81
82Button InizioSosta = (Button)findViewById(R.id.InizioSosta);
83InizioSosta.setEnabled(true); //<= (((PROBLEMA))
84
85Button FineSosta = (Button)findViewById(R.id.FineSosta);
86FineSosta.setEnabled(true);
87
88Button UserInfo = (Button)findViewById(R.id.UserInfo);
89UserInfo.setEnabled(true);
90
91Button InfoParcheggio = (Button)findViewById(R.id.InfoParcheggio);
92InfoParcheggio.setEnabled(true);
93
94System.out.println("- abilitazione eseguita correttamente!!!");
95
96
97//se tutto è andato a buon fine si ritorna alla pagina main con i bottoni abilitati
98Intent ips = new Intent(Login.this, MainActivityTelepark.class);
99startActivity(ips);
100
101}
102else{
103//---------------- toast
104Toast toast = Toast.makeText(Login.this,"I dati inseriti non sono corretti! riprova..", Toast.LENGTH_LONG);
105toast.setGravity(Gravity.CENTER, 0, 0);
106toast.show();
107}
108}
109};
110
111Button Entra = (Button) findViewById(R.id.Entra);
112Entra.setOnClickListener(entra);
113
114
115
116
117//bottone INDIETRO
118View.OnClickListener indietro = new View.OnClickListener() {
119
120public void onClick(View v) {
121
122Intent ips = new Intent(Login.this, MainActivityTelepark.class);
123startActivity(ips);
124}
125};
126
127Button Indietro = (Button) findViewById(R.id.Indietro);
128Indietro.setOnClickListener(indietro);
129
130
131//bottone LOGOUT
132View.OnClickListener logout = new View.OnClickListener(){
133
134public void onClick(View v) {
135
136//Intent ips = new Intent(Login.this, MainActivityTelepark.class);
137//startActivity(ips);
138
139//----------------- alert dialog
140//Creo una finestra di dialogo
141AlertDialog.Builder alertDialog = new AlertDialog.Builder(Login.this);
142//Setto il titolo del dialog
143alertDialog.setTitle("Conferma");
144//Setto il messaggio da visualizzare
145alertDialog.setMessage("Sei sicuro di voler effettuare il logout?");
146//Disabilito il tasto fisico del dispositivo
147alertDialog.setCancelable(false);
148//Aggiungo il tasto di chiusura del dialog
149alertDialog.setNegativeButton("Annulla", new DialogInterface.OnClickListener() {
150//Alla pressione del pulsante "chiudi" distruggo il dialog
151public void onClick(DialogInterface dialog, int which) {
152dialog.dismiss();
153}
154});
155//Aggiungo il tasto di conferma del dialog
156alertDialog.setPositiveButton("Si", new DialogInterface.OnClickListener() {
157//Alla pressione del pulsante "chiudi" distruggo il dialog
158public void onClick(DialogInterface dialog, int which) {
159dialog.dismiss();
160}
161});
162
163//Mostro il dialog
164alertDialog.show();
165}
166};
167
168Button Logout = (Button) findViewById(R.id.Logout);
169Logout.setOnClickListener(logout);
170
171}
172
Qual è la findViewByID che ti da problemi, a che numero di riga sta?
Puoi postare anche il file di layout login.xml?
la riga 83
<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout
android:id="@+id/widget0"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
>
<ImageView
android:id="@+id/settings"
android:layout_width="97px"
android:layout_height="90px"
android:layout_x="110px"
android:layout_y="22px"
android:src="@drawable/settings"
>
</ImageView>
<Button
android:id="@+id/Logout"
android:layout_width="80px"
android:layout_height="wrap_content"
android:text="Logout"
android:textStyle="bold"
android:layout_x="218px"
android:layout_y="42px"
>
</Button>
<Button
android:id="@+id/Indietro"
android:layout_width="80px"
android:layout_height="wrap_content"
android:text="Indietro"
android:textStyle="bold"
android:layout_x="20px"
android:layout_y="42px"
>
</Button>
<Button
android:id="@+id/Entra"
android:layout_width="143px"
android:layout_height="wrap_content"
android:text="Entra"
android:textStyle="bold"
android:layout_x="90px"
android:layout_y="342px"
>
</Button>
<TextView
android:layout_height="wrap_content"
android:text="codice Parkcard"
android:id="@+id/widget33"
android:layout_width="62px"
android:layout_x="24px"
android:layout_y="161px"
>
</TextView>
<TextView
android:layout_height="wrap_content"
android:text="codice Pin"
android:id="@+id/widget34"
android:layout_width="wrap_content"
android:layout_x="22px"
android:layout_y="238px"
>
</TextView>
<EditText
android:id="@+id/codicePin"
android:textSize="18sp"
android:layout_height="wrap_content"
android:layout_width="169px"
android:text=""
android:layout_x="108px"
android:layout_y="221px"
androidassword="true"
>
</EditText>
<EditText
android:id="@+id/codiceParkcard"
android:textSize="18sp"
android:layout_height="wrap_content"
android:layout_width="169px"
android:text=""
android:layout_x="108px"
android:layout_y="153px"
>
</EditText>
</AbsoluteLayout>
Come sospettavo
Nel tuo file di layout non c'è nessun bottone con quell'id (in questo caso InizioSosta)
Ecco perchè ti da errore, la findViewById ti restituisce giustamente null.
infatti si trova nel main, allora non posso abilitare un bottone da un altra classe chiamando la findViewById(R.id.bottone) ? e come faccio ad abilitare il bottone che si trova nella classe main dalla classe login?
No, aspetta, non ho capito che vuoi fare...
Ti trovi in una Activity che si chiama Login, e vorresti abilitare un bottone di un'altra activity che non è visualizzata? no, che non puoi... puoi al massimo passare tramite intent dei valori da un'activity ad un'altra ma non modificarla.