[解決済み] Android: Activity クラスを渡すと「Expression expected」と表示される
質問
私はAndroidプログラミングとJava全般の初心者なのですが、このエラーの原因がわかりません。以下のコード(最初のスニペットの終わり近く)で、行
"ColourOutput.do_output((Activity) com.(name-removed).(app-name-removed).ColourActivity);"
がエラーになります。
"Expression expected"
テキストに
"com.(name-removed).(app-name-removed).ColourActivity"
をAndroid Studio 1.1.0に追加しました。
(これはクラス
"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);
}
};
以下はその定義です。 "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;
}
}
解決方法は?
エラーメッセージは一目瞭然であるはずです。
...ColourActivity
はクラス名であり、クラス名それ自体はJavaでは有効な式ではありません。これはアンドロイドの問題ではなく、単純なシンタックスエラーです。
do_output()
は
インスタンス
の
Activity
. アクティビティクラスの名前を渡そうとすることで、何を達成しようとしているのか、よくわからないのですが。
ということですね。
do_output()
を試してみてください。
ColourOutput.do_output(ColorActivity.this);
の代わりに
プリヤ・シンハル(@Priya Singhal)が提案したように、明示的な参照は
ColorActivity.this
は、内部クラスからメソッドを呼び出しているため、必要です。
this
は、その内部クラスのインスタンスを参照しています。
関連
-
[解決済み】Hibernateの例外「failed to lazily initialize a collection of role」の解決方法
-
[解決済み】Javaの".class expected "について
-
[解決済み] Androidです。前のアクティビティに戻る
-
[解決済み] Androidでアクティビティ起動時にEditTextにフォーカスが当たらないようにする方法
-
[解決済み] Androidのローテーションでアクティビティを再開する
-
[解決済み] C++でクラスと構造体はいつ使い分けるべきか?
-
[解決済み] Intentsを使用して、あるAndroid Activityから別のAndroid Activityにオブジェクトを送信するにはどうすればよいですか?
-
[解決済み] Androidでフルスクリーンアクティビティは?
-
[解決済み】Androidで透明なActivityを作成する方法は?
-
[解決済み】Androidで、あるアクティビティから別のアクティビティにオブジェクトを渡す方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Doubleはdereferencedできない?
-
[解決済み】指定された子にはすでに親がいます。先に子の親に対してremoveView()を呼び出す必要がある(Android)
-
[解決済み】HTTPステータス500 サーブレットクラスのインスタンス化エラー [重複]。
-
[解決済み】Java JDK - doubleからintへの非可逆変換の可能性
-
[解決済み] メソッドがスーパータイプのメソッドをオーバーライドまたは実装していない - Overrideの場合
-
[解決済み】keytoolエラー 鍵屋が改ざんされたか、パスワードが不正確だった場合
-
[解決済み] intellijが自動配線リポジトリにタイプのBeanが見つからないと不正確な発言をする件
-
[解決済み】文字列中の � を置換する方法
-
[解決済み] JavaでSSLピアが正しくシャットダウンされない
-
[解決済み】Java: GZIPInputStreamの作成に失敗しました。GZIP形式ではありません