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

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); 
  • Creación de un número aleatorio de 4 dígitos y almacenamiento de una cadena
  • ¿Cómo realizar una solicitud DELETE sin tipo de devolución o devolución de llamada?
  • Crear una imagen que se puede hacer clic en un GridView en Android
  • ¿Cómo puedo tener un ListView dentro de un NestedScrollView
  • Obtener sólo la parte superior de la cámara
  • Java último día del problema del mes
  • Android: Diferencia entre getCount () y getChildCount () en ListView
  • Android: Cómo utilizar AlarmManager
  • Java - Android - Split Activity / Class en varios archivos para una mejor organización (solución)
  • ¿Qué significa (botón)?
  • ¿Cómo utilizar un parámetro de salida en Java?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.