총 게시물 934건, 최근 0 건 안내 RSS 글쓰기
이전글  다음글  목록 글쓰기
[안드로이드]

액션바 커스텀했는데 버튼 클릭이 안되네요

글쓴이 : 초보SW개발자 날짜 : 2018-01-22 (월) 11:06 조회 : 395
글주소 : http://www.androidside.com/B49_best/12879
 
  커스팬텀
또 하나의 스타일을 만들어보세요,신발커스텀,디자이너제작의뢰,디자인등록,무료배송
www.cusfantom.com
  ESPRIT 덴트 한국씨엔텍
커스텀어버트먼트전용프로그램 Swiss-StyleCNC머신과 연동가능한 시스템
www.espritkorea.co.kr
  서초동BMNT자동차
서울 서초동 소재 수입차 경력 10년 국산및 수입 전차종 새차로복원 보험수리가능
blog.naver.com/hero1067
신청하기


액션바안에 버튼 2개를 넣고 커스텀 했는데 버튼을 클릭해도 반응이 없네요


===========액션바 Menu============
public boolean onCreateOptionsMenu(Menu menu) {

        ActionBar actionBar = getSupportActionBar();

        actionBar.setDisplayShowCustomEnabled(true);
        actionBar.setDisplayHomeAsUpEnabled(false);            
        actionBar.setDisplayShowTitleEnabled(false);        
        actionBar.setDisplayShowHomeEnabled(false);            

        LayoutInflater inflater = (LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);
        View actionbar = inflater.inflate(R.layout.abs_layout, null);

        actionBar.setCustomView(actionbar);

        Toolbar parent = (Toolbar)actionbar.getParent();
        parent.setContentInsetsAbsolute(0,0);

        return true;
}

============== 메뉴 Selected=============
public boolean onOptionsItemSelected(MenuItem item) {

        // 히스토리 버튼
        if (id == R.id.history) {
            //flash가 켜져있을경우 끄기위해서
            scannerView.stopCamera();

            historyIntent = new Intent(getApplicationContext(),CodeHistoryActivity.class);
            if (scanResult != null || scanResult != ""){
                //historyIntent = new Intent(getApplicationContext(),CodeHistoryActivity.class);
                historyIntent.putExtra("scanResult", scanResult);

            }
            startActivity(historyIntent);
            finish();

            return  true;
            // 플레쉬 버튼
        } else if (id == R.id.flashON){
            scannerView.toggleFlash();  //Zxing Flash 토글 버튼

            // flash가 on이면 off사진을 보여준다
            if (scannerView.getFlash() == true) {

                item.setIcon(R.drawable.icon_flash_off);
            } else {

                item.setIcon(R.drawable.icon_flash_on);
            }
        }
        return super.onOptionsItemSelected(item);
}

================ xml파일 =============================
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="match_parent"
    android:layout_height="match_parent"
    
    >

    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="QR/바코드 검색"

        android:textColor="#ffffff"
        android:id="@+id/mytext"
        android:textSize="20dp" />

    <Button
        android:id="@+id/flashON"
        android:layout_width="36dp"
        android:layout_height="36dp"
        android:background="@drawable/icon_flash_on"
        android:layout_centerVertical="true"
        android:layout_toLeftOf="@+id/history"

         />

    <Button
        android:id="@+id/history"
        android:layout_width="36dp"
        android:layout_height="36dp"
        android:background="@drawable/icon_history"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
         />

</RelativeLayout>


onCreate메소드 안에 Button을 findViewById해서 setONnClickListener을 주면 nullPoint 떨어지네요



초보SW개발자 님의 개발 Q&A FAQ 최신글 [더보기]


질문답변 게시판에서 궁금한 사항을 해결하셨다면, 애써 답변해주신 분께 잘 되었다고 따뜻한 댓글 한마디 남겨주세요.
그리고 답변해주신 분의 글을 '추천' 해주세요.
추천받으신 분에게 1포인트가, 추천하신 분에게도 1포인트가 적립됩니다. ^^

안사 이쁜이 2018-01-22 (월) 11:06
축하드립니다. ;)
초보SW개발자님은 안사 이쁜이에 당첨되어 5 포인트 지급되었습니다.
OSKiller 2018-01-22 (월) 11:44
onCreate에서 어떤 레이아웃을 set했으며, 어떤 위젯을 findViewById하였는지요?

그리고 onCreateOptionsMenu는 액션바에 대한 설정을 하는 부분이 아닌걸로 아는데요...
다시 한번 확인 해보세요
댓글주소 추천 0 반대 0
     
     
초보SW개발자 2018-01-22 (월) 13:26
[@OSKiller]
구글에서 액션바 커스텀이라고 검색하니 xml을 작성후 onCreateOptionsMenu안에
LayoutInflater inflater = (LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);
View actionbar = inflater.inflate(R.layout.abs_layout, null);  
넣어주니 액션바에 xml 작성한 텍스트 버튼등이 보이더라구요

댓글주소 추천 0 반대 0
에찌 2018-01-22 (월) 13:27
OptionMenu 설정하는 부분에서 onCreate 에 들어가야할 내용들이 들어가있네여
댓글주소 추천 0 반대 0
     
     
초보SW개발자 2018-01-22 (월) 13:53
 MainActivity.java (13.3K), Down : 0, 2018-01-22 13:53:14

[@에찌]
저는 onCreateOptionsMenu()안에 쓰니 되네요. 맞게 제대로 쓴지는 몰라도 ..
댓글주소 추천 0 반대 0
OSKiller 2018-01-22 (월) 13:40
https://developer.android.com/reference/android/app/Activity.html#onCreateOptionsMenu(android.view.Menu)
제가 기억 하는게 맞는거 같은데...
어디서 이상한거 보고 붙이셨나봅니다 ㄷㄷㄷㄷㄷ
댓글주소 추천 0 반대 0
     
     
초보SW개발자 2018-01-22 (월) 13:49
 MainActivity.java (13.3K), Down : 1, 2018-01-22 13:49:53

[@OSKiller]
제가 작성한 건데 onCreateOptionsMenu()안에 쓰니 액션바가 되서...
댓글주소 추천 0 반대 0
초보SW개발자 2018-01-22 (월) 13:42
 abs_layout.xml (1.2K), Down : 0, 2018-01-22 13:56:05

제가 맞게쓰고 있는지는 모르겠는데 해결했네요

onCreateOptionsMenu()안에서 버튼을 findViewById 해서 setOnClickListener하니 되네요

onOptionsItemSelected()은 필요가 없어졌네요

이건 onCreateOptionsMenu()안에 inflate 한 xml파일입니다.
댓글주소 추천 0 반대 0
에찌 2018-01-22 (월) 14:20
음... 우선 onCreateOptionMenu 호출시점부터 알아보시져.
https://developer.android.com/guide/topics/ui/menus.html?hl=ko
구글 API 가이드에 나타나있는 것처럼 메뉴 리소스에 대한 콜백을 받는 부분으로 나타내어지고있습니다.

물론 문제가 안될 수도 있지만 Activity 생성주기에 맞춰 리소스를 가져오는게 맞을 듯합니다.
그리고 현재 액티비티의 기본 액션바를 사용하시고 계시므로 버튼을 클릭하는게 아니라 메뉴 아이템을 클릭했을 때 이벤트가 노출되겠네요.

만약에 원하시는 버튼이 클릭되게 하려면 툴바를 따로 두시고 그 툴바를 액션바에 넣은 다음에 툴바에 있는 버튼을 가져와 클릭이벤트를 주는 게 맞겠지요 ^^

댓글주소 추천 0 반대 0
     
     
초보SW개발자 2018-01-22 (월) 14:42
[@에찌]
그렇다면 onCreateOptionsMenu()은 xml에서 텍스트뷰랑 버튼을 보이게(표시)하는 역할만 한다는 건가요?
댓글주소 추천 0 반대 0
이전글  다음글  목록 글쓰기

 


Copyright ⓒ www.androidside.com. All rights reserved.
채팅 권한: 글쓰기 1개
2레벨 이상만 대화 가능
공개 채팅: 평일 !(9시 ~ 17시),토,일
안사2 변경사항 보러가기 챗방이 잘 안보이면 크롬에서 접속해주세요
챗방 숨기기 |  챗방 보이기