0

Androidの初心者であり、長年プログラミングを離れていた私は、インターネット上でこれに対する答えを見つけることができませんでした。私が読んでいる本の次のコードが含まれていますが、構文はAndroidでは一般的です。私は何を理解できませんでした}); 表されます。過去にブラケットを読みやすくするために努力した人として、私はこのコードが素晴らしいと思います、確かにこれを示すためのより良い方法は可能ですか?

コードは次のとおりです。

CheckBox checkBox = (CheckBox)findViewById(R.id.chkAutosave);
checkBox.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v) {
        if (((CheckBox)v).isChecked())
            DisplayToast("CheckBox is checked");
        else
            DisplayToast("CheckBox is unchecked");
    }
});

とにかく誰もが})の意味を知っていますか?最後に?

4

5 に答える 5

6

これは、の匿名実装の定義をView.OnClickListener閉じてから、メソッド呼び出しを閉じますsetOnClickListener()

より明確にするために、コードは次と同等です。

View.OnClickListener listener = new View.OnClickListener() {
    public void onClick(View v) {
        if (((CheckBox)v).isChecked())
            DisplayToast("CheckBox is checked");
        else
            DisplayToast("CheckBox is unchecked");
    }
};

checkBox.setOnClickListener(listener);
于 2012-07-25T00:43:49.657 に答える
3

の "});":

  • "}" : View.OnClickListener() メソッドを閉じる
  • ")" : setOnClickListener() を閉じる
  • ";" : クローズ命令
于 2012-07-25T00:49:37.767 に答える
1

setOnClickListenerを閉じます。ヒントEclipseを使用している場合は、閉じたブラケットの右側にカーソルを置きます。開いたブラケットが強調表示されるので、何が何であるかを確認できます。

于 2012-07-25T00:47:21.870 に答える
0

始める:

checkBox.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v) {
        if (((CheckBox)v).isChecked())
            DisplayToast("CheckBox is checked");
        else
            DisplayToast("CheckBox is unchecked");
    }
});

メソッドを削除します(これはすべての場合にコンパイルされるわけではありませんが、今のところコンパイルされるふりをします):

checkBox.setOnClickListener(new View.OnClickListener()
{
  /* .. */
});

余分な空白を削除します。

checkBox.setOnClickListener(new View.OnClickListener() { /* .. */ });

そしてそこに。「通常のメソッド呼び出し」のように見えます:)コードは、イベントリスナーを表す匿名型の新しいインスタンスを渡すだけです。

それは書かれている可能性があります:

ClickEventListener listener = new View.OnClickListener() { /* .. */ };
checkBox.setOnClickListener(listener);

ハッピーコーディング!

于 2012-07-25T01:06:55.550 に答える
0

それらの答えに感謝します。ブラケットの再配置が役立つことがわかったので、今後の参考のためにこれを投稿します。それが従来の慣行にどのように準拠しているかはわかりませんが。

CheckBox checkBox = (CheckBox)findViewById(R.id.chkAutosave);
checkBox.setOnClickListener
    (   new View.OnClickListener()
        {
             public void onClick(View v) 
             {
                  if (((CheckBox)v).isChecked())
                      DisplayToast("CheckBox is checked");
                  else
                      DisplayToast("CheckBox is unchecked");
             }  // onClick
        } // new View.OnClickListener()
    );  // checkBox.setOnClickListener

乾杯!

于 2012-07-30T06:20:29.990 に答える