Android: "Expresión esperada" al pasar una clase de actividad

Soy un poco nuevo para la programación de Android y Java en general, y no puedo averiguar lo que está causando este error; Como yo entiendo que esto debería funcionar. En el código que se muestra a continuación (cerca del final del primer fragmento), la línea "ColourOutput.do_output((Activity) com.(name-removed).(app-name-removed).ColourActivity);" Está dando el error "Expression expected" en el texto "com.(name-removed).(app-name-removed).ColourActivity" en Android Studio 1.1.0.

(Esto es dentro de la clase "public class ColourActivity extends Activity" ).

  private Camera.PreviewCallback preview_callback = new Camera.PreviewCallback() { @Override public void onPreviewFrame(byte[] data, Camera camera) { int width = mCamera.getParameters().getPreviewSize().width; int height = mCamera.getParameters().getPreviewSize().height; int raw_pixels[]; int pixels[]; raw_pixels = new int[width * height]; pixels = new int[get_sample_width() * get_sample_height()]; convert_yuv(raw_pixels, data, width, height); crop_pixels(raw_pixels, pixels, width, height, (width - get_sample_width()) / 2, (height - get_sample_height()) / 2, get_sample_width(), get_sample_height()); if (PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).getBoolean("use_mean", true) == true) { ColourOutput.add_colour_to_output( ColourTools.get_mean( pixels, get_sample_width(), get_sample_height(), PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).getBoolean("detect_secondary", true), PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).getBoolean("detect_white", true), PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).getBoolean("detect_brightness", true), PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).getInt("quantization_secondary", 32), PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).getInt("quantization_dark", 43), PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).getInt("quantization_light", 128), PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).getBoolean("quantization_matching_only", true) ), ColourOutput.ColourType.MEAN); } if (PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).getBoolean("use_mode", true) == true) { ColourOutput.add_colour_to_output( ColourTools.get_mode( pixels, get_sample_width(), get_sample_height(), PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).getBoolean("detect_secondary", true), PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).getBoolean("detect_white", true), PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).getBoolean("detect_brightness", true), PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).getInt("quantization_secondary", 32), PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).getInt("quantization_dark", 43), PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).getInt("quantization_light", 128), PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).getBoolean("quantization_matching_only", true) ), ColourOutput.ColourType.MODE); } ColourOutput.do_output((Activity) com.(name-removed).(app-name-removed).ColourActivity); } }; 

Aquí está la definición de "ColourOutput.do_output" :

 public class ColourOutput { private static boolean output_clear = true; private static String output_buffer = ""; public static enum ColourType { MEAN, MODE } public static void add_colour_to_output(ColourTools.ColourDescription colour, ColourType type) { if (output_clear == true) { output_buffer = colour.Brightness.toString() + " " + colour.Colour.toString(); } else { output_buffer = output_buffer + " " + colour.Brightness.toString() + " " + colour.Colour.toString(); } output_clear = false; } public static void do_output(Activity activity) { ((TextView) activity.findViewById(R.id.output_text)).setText(output_buffer); output_buffer = ""; output_clear = true; } } 

El mensaje de error debe ser autoexplicativo: ...ColourActivity es un nombre de clase y un nombre de clase por sí mismo no es una expresión válida en Java. Esto no es un problema de Android, se trata de un simple error de sintaxis.

do_output() espera una instancia de una Activity . No estoy muy seguro, lo que estás tratando de lograr tratando de pasar el nombre de la clase de actividad.

Yo asumiría, que – ya que está llamando do_output() desde dentro de su actividad – es posible que desee probar

 ColourOutput.do_output(ColorActivity.this); 

en lugar.

Como se sugiere por @Priya Singhal, la referencia explícita a ColorActivity.this es necesario como usted está llamando el método de dentro de una clase interna y this refiere a la instancia de esa clase interna.

  • Utilizar diferentes recursos (gráficos y cadenas) para distintos sabores de aplicación utilizando gradle
  • Usando get () y put () para acceder a valores de píxeles en OpenCV para Java
  • No puedo localizar el SDK de Android en mi computadora
  • Cadena de EditText a float
  • Reino: crear relaciones por ids
  • Almacenamiento de mapa de bits en la tarjeta SD pérdida de la calidad de imagen
  • ListView y Tabwidget en Fragmento
  • Pantalla completa DialogFragment se superpone con StatusBar
  • Métodos estáticos o singleton, ¿cuál elegir?
  • Convertir cadena a JSON array
  • Tratar con android.text.ClipboardManager obsoleto
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.