2017-12-06 4 views
1

なぜ(null!= rb & & checkedId> -1)コードを削除しても、プログラムは動作します。このコード行のメリットは何ですか?Androidラジオボタングループ、なぜこれが必要ですか?

radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { 
     @Override 
     public void onCheckedChanged(RadioGroup group, int checkedId) { 
      RadioButton rb = (RadioButton) group.findViewById(checkedId); 
      if (null != rb && checkedId > -1) { 

       switch (rb.getId()){ 

        case R.id.radioFast: 
         mAnimOption = FAST; 
         break; 

        case R.id.radioSlow: 
         mAnimOption = SLOW; 
         break; 

        case R.id.radioNone: 
         mAnimOption = NONE; 
         break; 


       } 
       // End switch block 

       mEditor.putInt("anim option", mAnimOption); 

      } 

     } 
    }); 
+0

この行を使用する必要はありません。ラジオグループの選択と選択されたIDのみをチェックします –

答えて

1

利点は、あなたのアンドロイドアプリをクラッシュさせる原因となるnullpointerexceptionを避けることです。

0
if (null != rb && checkedId > -1) 

クラッシュを回避するために使用されるので、タールたびにNULLが呼び出されるか、ユーザcheckedIdは、それがエラーをスローし、不要なクラッシュを回避するNULLです。

開発者ごとに、この方法でコードを作成して、APPの実行中にクラッシュすることはありません。

0

他の回答は避ける必要があると言います。NullPointerException私はそれに同意します。

ただし、コードごとに必須ではありません。 nullを確認する必要はありません。理由は?

方法

public void onCheckedChanged(RadioGroup group, int checkedId) {} 

戻りgroupタイプRadioGroupのオブジェクトと現在checkedIdとしてRadioButton IDを選択しました。したがって、あなたはすでにcheckedIdを持っているので、nullをチェックする必要はありません。

直接switchステートメントを使用して、予想されるケースを比較してください。

checkedIdがケースと一致しない場合(つまり、-1などの値)、defaultケースを使用してください。

関連する問題