2011-01-21 15 views
19

Quando stavo cercando di utilizzare questo codice per attivare le preferenze nella mia apperrore di annotazione @Override (prefs Android)

import android.app.Activity; 
import android.content.SharedPreferences; 
import android.os.Bundle; 
import android.preference.Preference; 
import android.preference.PreferenceActivity; 
import android.preference.Preference.OnPreferenceClickListener; 
import android.widget.CheckBox; 
import android.widget.CompoundButton; 
import android.widget.RadioButton; 
import android.widget.Toast; 
import android.widget.CompoundButton.OnCheckedChangeListener; 


public class Preferences extends PreferenceActivity { 

private RadioButton btn01; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    addPreferencesFromResource(R.xml.preferences); 
    btn01 = (RadioButton)findViewById(R.id.RadioButton01); 
    Preference customPref = (Preference) findPreference("customPref"); 

    customPref.setOnPreferenceClickListener(new OnPreferenceClickListener(){ 

     public boolean onPreferenceClick(Preference preference) { 
      Toast.makeText(getBaseContext(),"The Custom Preference Has Been Clicked",Toast.LENGTH_LONG).show(); 
      SharedPreferences customSharedPreference = getSharedPreferences("myCutomSharedPrefs", Activity.MODE_PRIVATE); 
      SharedPreferences.Editor editor = customSharedPreference.edit(); 
      editor.putString("myCustomPref","The preference has been clicked"); 
      editor.commit(); 
      return true; 
     } 


     public void CheckBox() { 
      final CheckBox ThisCheckBox = (CheckBox) findViewById (R.id.checkboxPref); 
      ThisCheckBox.setOnCheckedChangeListener(new OnCheckedChangeListener(){ 
       @Override 
       public void onCheckedChanged(CompoundButton compoundButton,boolean test) { 
        if (ThisCheckBox.isChecked()){ 
         btn01.setVisibility(0); 
        } else { 
         btn01.setVisibility(2); 
        } 
       } 
      }); 
     }; 
    }); 
} 
} 

Un errore viene generato su questa linea

public void onCheckedChanged(CompoundButton compoundButton,boolean test) { 

dicendo:

Multiple markers at this line 
- The method onCheckedChanged(CompoundButton, boolean) of type new 
CompoundButton.OnCheckedChangeListener(){} must override a superclass method 
- implements 
android.widget.CompoundButton.OnCheckedChangeListener.onCheckedChanged 

Se rimuovo l'annotazione @Override, il codice non funziona e un avvertimento mi dice che quella parte del il codice non è usato localmente.

Avendo passato questo passato qualcuno e sconcertandoli mi chiedevo se potevi aiutare?

Esistono scenari comuni che causano questo errore?

ho pensato che potrebbe essere il mio progetto istituito

Grazie

risposta

18

E 'una cosa implementazione. In Java 5 contro Java 6 hanno cambiato se si potesse usare "Override" con un'interfaccia (poiché Override sembra implicare che si sta sovrascrivendo una sorta di comportamento predefinito, cosa che non si sta facendo con un'interfaccia!). Se lo desideri, puoi cercare nelle preferenze di Eclipse e cambiarlo da un errore di compilazione a un avviso di compilazione. Il codice all'interno della funzione CheckBox() mi sembra soddisfacente.

Tuttavia, non si sta mai chiamando la funzione CheckBox, quindi è da lì che proviene l'errore "non utilizzato localmente". Volevi chiamare questa funzione dal metodo OnPreferenceClick?

+0

WOW uomo! molte grazie. Ok, allora come e dove devo chiamare il metodo checkbox se deve essere usato localmente? – Jack

+0

Da dentro il metodo onPreferenceClick è un modo per farlo. Dopo editor.commit() aggiungi una chiamata a CheckBox(); – Hamy

+4

Basta modificare da 1.5 a 1.6 in YourProject-> RightClick-> Proprietà-> Java Compiler-> 1.5, a 1.6. Applica e Sì per ricostruire. – Siddharth

49

È possibile accedere a Impostazioni progetto -> Compilatore Java e impostare il livello di conformità del compilatore su 1.6. Devo farlo ogni volta che importare un progetto esistente.

+0

sì, funziona per me. – anticafe

+0

Ho modificato la conformità del compilatore da 1.5 a 1.6 e ha funzionato. grazie –

Problemi correlati