본문 바로가기
OS/Android

이미지버튼, 체크버튼, 라디오버튼, 토글버튼, 레이팅 바 장장 4시간만에 성공~!

by Lohen 2016. 2. 5.

MainActivity.java

 

package com.example.stuffs;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.RadioButton;
import android.widget.RatingBar;
import android.widget.RatingBar.OnRatingBarChangeListener;
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);
        
        RatingBar rBar = (RatingBar)findViewById(R.id.rbar);
        rBar.setOnRatingBarChangeListener(new OnRatingBarChangeListener(){
         public void onRatingChanged(RatingBar rbar, float rating, boolean fromUser){
          Toast.makeText(MainActivity.this, "New Rating: " + rating, Toast.LENGTH_SHORT).show();
         }
        });
    }
    
    // 이걸 xml에서 호출하면 에러발생 (사유 모름 / 확인 필요)
    public void onButtonClicked(View v){
      Toast.makeText(MainActivity.this, "Button Clicked", Toast.LENGTH_SHORT).show();
    }
    
    // 이걸 xml에서 호출하면 에러발생 (사유 모름 / 확인 필요)
    public void onCheckBoxClicked(View v){
     if (((CheckBox)v).isChecked()) {
      Toast.makeText(MainActivity.this, "Checked", Toast.LENGTH_SHORT).show();
  }else{
   Toast.makeText(MainActivity.this, "Not Checked", Toast.LENGTH_SHORT).show();
  }
    }
    
    // 이걸 xml에서 호출하면 에러발생 (사유 모름 / 확인 필요)
    public void onRadioButtonClicked(View v){
     //RadioButton rbtn = (RadioButton)v;     
     Toast.makeText(this, ((RadioButton)v).getText(), Toast.LENGTH_SHORT).show();
    }
    
    public void onToggleClicked(View v){
     if (((ToggleButton)v).isChecked()) {
      Toast.makeText(MainActivity.this, "Toggle On", Toast.LENGTH_SHORT).show();
  }else{
   Toast.makeText(MainActivity.this, "Toggle Off", Toast.LENGTH_SHORT).show();
  }
    }
    
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
}

activity_main.xml

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    >
    <Button
        android:id="@+id/btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="10dp"
        android:background="@drawable/sc_image_button"
        android:onClick="onButtonClicked"
    />
    <CheckBox
        android:id="@+id/checkbox"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="check it out"
        android:onClick="onCheckBoxClicked"
        />
     <RadioGroup 
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:orientation="vertical">
        <RadioButton
         android:id="@+id/rbtn_red"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:text="Red"
         android:onClick="onRadioButtonClicked"
         android:checked="true"
        />
     <RadioButton
         android:id="@+id/rbtn_blue"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:text="Blue"
         android:onClick="onRadioButtonClicked"
        />
     </RadioGroup>
 <ToggleButton 
     android:id="@+id/tbtn"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:textOn="Vibrate on"
     android:textOff="Vibrate off"
     android:onClick="onToggleClicked"
     />
 <RatingBar 
     android:id="@+id/rbar"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:numStars="5"
     android:rating="1"
     android:stepSize="1.0"
     />
</LinearLayout>

 

sc_image_button.xml

 

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:drawable="@drawable/android_pressed"
        android:state_pressed="true" />
    <item
        android:drawable="@drawable/android_focused"
        android:state_focused="true" />
    <item
        android:drawable="@drawable/android_normal"
        />    
</selector>

 

 

위와 같이 했을때 4시간 동안 삽질한 것을 알려주겠다.

 

xml의 버튼에서         android:onClick="onButtonClicked" 로 클릭 이벤트를 등록했다.

java에서 onButtonClicked을 구현해주면 간단하게 구현되는 거다.

근데 이게 안되서 4시간 동안 삽질..

 

 

문제는 이거였다.  OnButtonClicked

 

흑흑.

 


반응형