-1
Xamarin/C#からAndroid Studio/Javaに切り替えたところ、2つの言語の相違点に慣れてきました。私はJavaで書かれたAndroidの本を読み、次の2行のコードに出くわしたんだ:Android/Javaの2つの簡単な質問
1)最初の行で
PreferenceManager.getDefaultSharedPreferences(this)
.registerOnSharedPreferenceChangeListener(preferencesChangeListener);
、私はpreferencesChangeListenerが使用されている方法で混乱しています。 C#では、オブジェクトをインスタンス化することなく、新しいpreferencesChangeListenerオブジェクトを引数に投げることはできません。だからJavaでは、暗黙的にインスタンス化することが許されていますか?
2)
int screenSize = getResources().getConfiguration().screenLayout &
Configuration.SCREENLAYOUT_SIZE_MASK;
第二に、私はここで使用される '&' 記号で混乱しています。私はアンパサンドがブール引数に使われていると思っていましたが、ここでは、平等の左辺が整数を期待していることがわかります。何が起きてる?あなたはそれを呼び出している方法は、ほとんどの出力
NullPointerException
を取得します
'preferencesChangeListener'は、そのメソッド呼び出し時に利用可能ないくつかのスコープで宣言する必要があります。 '&'はJavaのビット演算子であり、数値を扱うときは – Kon
'preferenceChangeListener'はオブジェクトインスタンスへの変数参照です。事前の宣言はありませんか? 'PreferenceChangeListener preferenceChangeListener =新しいPreferenceChangeListener()'またはそれに類するもの? – gmiley
@Konビット単位で、&&は論理AND演算子です – Natecat