私はこれら2つの決定木がどのように異なっているかについて非常に混乱しています。私はListViewから選択された位置に基づいてロードするビューを決定する必要があるアプリケーションを構築しています。私は、単一のコントローラモジュールにロジックを構築しようとしましたが、if-elseが完全に動作する間、switch-caseがNullPointerExceptionとFCを引き起こすことがわかりました。なぜ誰かが私に啓発することができますか?私はCとC++で強力な背景を持っており、if-elseとその逆にスイッチを簡単に書き直すことに慣れています。Android/Javaの質問。これら2つの決定木はどのように異なっていますか?
定義VARS:
private final int VALUEA = 0;
private final int VALUEB = 1;
private final int VALUEC = 2;
スイッチケース:
TextView t = new TextView(null);
switch(value){
case VALUEA:
setContentView(R.layout.valuealayout);
t = (TextView) findViewById(R.id.valuealayout);
t.findViewById(R.id.valuealayout);
break;
case VALUEB:
setContentView(R.layout.valueblayout);
t = (TextView) findViewById(R.id.valueblayout);
t.findViewById(R.id.valueblayout);
break;
case VALUEC:
setContentView(R.layout.valueclayout);
t = (TextView) findViewById(R.id.valueclayout);
t.findViewById(R.id.valueclayout);
break;
default:
break;
}
上記ブロックがNullPointerExceptionが発生します。
場合、他:このバージョンは、完全に動作し
if(value == VALUEA){
setContentView(R.layout.valuealayout);
TextView t = (TextView) findViewById(R.id.valuealayout);
t.findViewById(R.id.valuealayout);
}else if(value == VALUEB){
setContentView(R.layout.valueblayout);
TextView t = (TextView) findViewById(R.id.valueblayout);
t.findViewById(R.id.valueblayout);
}else if(value == VALUEC){
setContentView(R.layout.valueclayout);
TextView t = (TextView) findViewById(R.id.valueclayout);
t.findViewById(R.id.valueclayout);
}else{
}
。 2番目のブロックは、デシジョンツリーの各ブランチが最初のブロックが作成しない方法でTextViewを作成して適切に初期化できるような、ファンキーなJavaスコープ規則のために機能しますか?
どのラインがNPEをスローしますか? –