El método no estático 'getSharedPreferences (java.lang.String, int)' no se puede referenciar desde un contexto estático

Tengo una aplicación, y estoy tratando de limitar el número de clics de botón a cinco, y luego una vez que el usuario ha presionado este botón cinco veces debe deshabilitar.

Sin embargo, estoy recibiendo el error anterior y no estoy seguro de por qué.

Algunas ideas ?

buttonadd.setOnClickListener(new OnClickListener () { @Override public void onClick(View v) { Intent intent = new Intent(getApplicationContext(), MainActivity3.class); startActivity(intent); int clicks = 0; clicks++; if (clicks >= 5){ buttonadd.setEnabled(false); } SharedPreferences prefs = Context.getSharedPreferences("myPrefsKey", Context.MODE_PRIVATE); SharedPreferences.Editor editor = prefs.edit(); editor.putInt("clicks", clicks); editor.apply(); } }); 

3 Solutions collect form web for “El método no estático 'getSharedPreferences (java.lang.String, int)' no se puede referenciar desde un contexto estático”

Usted está intentando equivocadamente usar el método virtual getSharedPreferences() de una manera estática , es por eso que está dando ese error en tiempo de compilación.

Si ese código está en una Activity , reemplácelo

 Context.getSharedPreferences("myPrefsKey", Context.MODE_PRIVATE); 

con

 getSharedPreferences("myPrefsKey", Context.MODE_PRIVATE); 

Si está en un Fragment , use

 getActivity().getSharedPreferences("myPrefsKey", Context.MODE_PRIVATE); 

EDITAR:

utilizar

 if (clicks >= 5){ buttonadd.setEnabled(false); buttonadd.setClickable(false); buttonadd.setFocusable(false); buttonadd.setFocusableInTouchMode(false); } 

y hacer clicks un miembro de la clase, es decir, declararlo como

 private int clicks; 

en la Activity .

EDIT 2:

Creo que he entendido el error que estás cometiendo. En su código, reemplace

 int clicks = 0; 

con

 SharedPreferences prefs = getSharedPreferences("myPrefsKey", Context.MODE_PRIVATE); int clicks = prefs.getInt("clicks", 0); 

Prueba esto. Esto debería hacerlo.

Significa que se necesita una instancia de un objeto Context para llamar al método getSharedPreferences() . Si estás dentro de una Activity , prueba esto:

 this.getSharedPreferences("myPrefsKey", Context.MODE_PRIVATE) 

Como el mensaje de error dice getSharedPreferences() es un método no estático. Cuando haces Context.getSharedPreferences(...) estás intentando llamar directamente de la clase. En su lugar, debe llamar desde una instancia de Context .

Si su código está dentro de una Activity (como Activity extiende el Context ), simplemente puede hacer:

 SharedPreferences prefs = this.getSharedPreferences("myPrefsKey", Context.MODE_PRIVATE); 
  • No se puede encontrar el nombre de la clase de actividad predeterminada
  • Encriptación de Android "bloque pad bloqueado" excepción
  • ¿Cómo puedo conseguir el selector de marcación rápida android fab?
  • En la transformación Circle Hough, ¿cuál es la razón inversa de la resolución del acumulador (dp) y cómo afecta la detección de círculos?
  • android uso pcap biblioteca
  • Ocultar barra de estado de Android
  • El archivo existe y el directorio IS, pero listFiles () devuelve null
  • ¿Cómo comprobar FileLock sin truncar el archivo?
  • HttpURLConnections persistentes en Android
  • No se puede acceder a Internet a través de WiFi desde un servicio de fondo
  • No puedo trabajar con Jackson
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.