마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

버튼에서 setOnClickListener 오류가 생겨 질문드립니다.

0 추천
package com.example.widget1demo;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.RadioGroup;
import android.widget.RadioGroup.OnCheckedChangeListener;
import android.widget.Toast;
import android.widget.ToggleButton;

public class MainActivity extends Activity {
 
 

 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  
  ((Button)findViewById(R.id.btnOpen)).setOnClickListener(listener);
  ((Button)findViewById(R.id.btnSave)).setOnClickListener(listener);
 
  ((ImageButton)findViewById(R.id.btnImg))
  .setOnClickListener(new View.OnClickListener() 
  { 
   @Override
   public void onClick(View v) {
    EditText edit = (EditText)findViewById(R.id.edit);
    Toast.makeText(MainActivity.this,
    "Image button click. EditText = " +
    edit.getText().toString(),
    Toast.LENGTH_SHORT).show();
   }
  });
  
  ((CheckBox)findViewById(R.id.chkAutoSave))
  .setOnClickListener(new View.OnClickListener()
  {
   public void onClick(View v) {
    Toast.makeText(MainActivity.this,
      "CheckBox is " +
    (((CheckBox)v).isChecked()? "checked" : "unchecked"),
    Toast.LENGTH_SHORT).show();
   }
  });
  
  ((RadioGroup) findViewById(R.id.rdbGp))
  .setOnCheckedChangeListener(new OnCheckedChangeListener()
  {
   public void onCheckedChanged(RadioGroup group, int checkedId){
    //RadioButton rdb = (RadioButton)findViewById(R.id.rdb1);
    Toast.makeText(MainActivity.this,
      "You have clicked the Radio button: " +
    (checkedId == R.id.rdb1? "KBS" : "MBC"), 
    Toast.LENGTH_SHORT).show();
   }
  });
  
  ToggleButton toggleButton = (ToggleButton)findViewById(R.id.toggle);
  toggleButton.setOnClickListener(new View.OnClickListener()
  {
    public void onClick(View v) {
     Toast.makeText(MainActivity.this,
       "Toggle button is " +
          (((ToggleButton)v).isChecked()? "On" : "Off"),
          Toast.LENGTH_SHORT).show();
   }
  });
  
  Button.OnClickListener listener = new Button.OnClickListener() {
   public void onClick(View v) {
    switch(v.getId()){
    case R.id.btnOpen:
     Toast.makeText(MainActivity.this,
      "You have clicked the Open button",
      Toast.LENGTH_SHORT).show();
    case R.id.btnSave:
     Toast.makeText(MainActivity.this,
       "You have clicked the Save button",
       Toast.LENGTH_SHORT).show();
    }
      }
  };
 }
 
  

 @Override
 public boolean onCreateOptionsMenu(Menu menu) {
  // Inflate the menu; this adds items to the action bar if it is present.
  getMenuInflater().inflate(R.menu.main, menu);
  return true;
 }

}

 

다른부분은 다 괜찮은데 시작부분에

((Button)findViewById(R.id.btnOpen)).setOnClickListener(listener);

와 그 다음줄에서 마지막 listener에 오류가 있어 실행을 할 수가 없습니다.

왜 그런거죠 ㅠㅜ

사람 (160 포인트) 님이 2014년 9월 30일 질문

1개의 답변

+1 추천
listener 정의 부분을 onCreate메서드에서 밖으로 빼세요
alkyne (22,960 포인트) 님이 2014년 9월 30일 답변
...