2011-01-21 26 views
19

Cuando yo estaba tratando de utilizar este código para permitir que las preferencias en mi aplicaciónerror de anotación @ Override (Preferencias androide)

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); 
        } 
       } 
      }); 
     }; 
    }); 
} 
} 

se genera un error en esta línea

public void onCheckedChanged(CompoundButton compoundButton,boolean test) { 

diciendo:

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 

Si elimino la anotación @Override, el código no funciona y una advertencia me dice que esa parte del el código no se usa localmente

Después de haber pasado por alto a alguien y desconcertarlos me preguntaba si podría ayudar?

¿Hay algún escenario común que cause este error?

pensé que podría ser mi proyecto estableció

Gracias

Respuesta

18

Es una cosa aplicación. En Java 5 vs Java 6 cambiaron si se podía usar "Override" con una interfaz (¡ya que Override parece implicar que se está anulando algún tipo de comportamiento predeterminado, que no se está haciendo con una interfaz!). Si lo desea, puede buscar en las preferencias de Eclipse y cambiarlo de un error de compilación a una advertencia de compilación. El código dentro de la función CheckBox() me parece bien.

Sin embargo, nunca se está llamando a la función CheckBox, por lo que es de donde proviene el error 'no usado localmente'. ¿Quería llamar a esa función desde el método OnPreferenceClick?

+0

WOW hombre! muchas gracias. Ok, entonces, ¿cómo y dónde estoy para llamar al método de casilla de verificación si se va a usar localmente? – Jack

+0

Desde dentro del método onPreferenceClick hay una forma de hacerlo. Después de editor.commit() agregar una llamada a CheckBox(); – Hamy

+4

Simplemente modifique 1.5 a 1.6 en su YourProject-> RightClick-> Properties-> Java Compiler-> 1.5, a 1.6. Aplicar y Sí para reconstruir. – Siddharth

49

Puede ir a Configuración del proyecto -> Compilador de Java, y cambiar el nivel de cumplimiento del compilador a 1.6. Tengo que hacerlo cada vez que importo un proyecto existente.

+0

sí, funciona para mí. – anticafe

+0

Cambié 'Cumplimiento del compilador de 1.5 a 1.6 y funcionó. gracias –

Cuestiones relacionadas