2011-10-12 4 views
0

Android 태블릿 용 앱 프레임 워크를 구축 중이며 일부 ImageButton에 이상한 문제가 있습니다. 이 단추 (다음 & 이전)는 프레임 워크의 일부로 "내용 페이지"를 탐색하는 데 사용되며 사용자 정의 배경 드로어 블을 사용합니다.이상하게 행동하는 Android 이미지 버튼

이전 버튼을 클릭 할 때마다 다음 버튼이 강조 표시되고 이전 버튼은 강조 표시되지 않습니다. 처음에는 간단한 링크 또는 id/issue라고 생각했지만 이전 버튼의 동작은 다음 버튼이 아니라 수행되었습니다. 에서 onCreate에서

() 메소드 :

nextButton = (ImageButton) findViewById(R.id.nextButton); 
prevButton = (ImageButton) findViewById(R.id.prevButton); 
nextButton.setOnClickListener(this); 
prevButton.setOnClickListener(this); 

의 onclick 방법 : 여기

는 몇 가지 관련 코드

public void onClick(View v) { 
    if(_cpp == null){ 
     finish(); 
    }else if (v == nextButton) { 
     if (!_cpp.nextRes.equalsIgnoreCase("")) { 
      // load next page 
      _tempRes = _cpp.nextRes; 
      //start transition out animations 
      fadePageOut(); 
     } else { 
      finish(); 
     } 
    } else if (v == prevButton) { 
     if (!_cpp.prevRes.equalsIgnoreCase("")) { 
      // load previous page 
      _tempRes = _cpp.prevRes; 
      //start transition out animations 
      fadePageOut(); 
     } 
    } 
} 

내 당김 XML : 나는 '

<?xml version="1.0" encoding="UTF-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_enabled="false" android:drawable= "@drawable/prev_arrowhigh" /> 
<item android:state_pressed="true" android:state_enabled="true" 
    android:drawable="@drawable/prev_arrowhigh" /> 
<item android:state_focused="true" android:state_enabled="true" 
    android:drawable="@drawable/prev_arrow" /> 
<item android:state_enabled="true" android:drawable="@drawable/prev_arrow" /> 
</selector> 

디버깅 중이며 행운과 함께 2 일 동안 답변을 검색했습니다. 우스운 일은 잘 작동하는 데 사용되는 것입니다 ...하지만 이전 버전의 프로젝트로 돌아가는 것조차도 전혀 도움이되지 않았습니다.

혹시이 문제가 발생했거나이 문제의 원인이 될 수있는 사람이 있습니까?

+0

옆에 "이전"과 "입니다 "버튼을 동일한 드로어 블 (회전 가능)을 사용합니까? 그게 문제 일 수 있습니다 – SERPRO

+0

아니요, 그들은 두 개의 드로어 블을 사용합니다. prev_button.xml 및 next_button.xml. 이것들은 레이아웃 XML 파일에서 설정됩니다. – MZGS

답변

0

해결되었습니다! 어리 석고 바보 같은 ...

내 코드 (게시되지 않은 부분)에서 fadePageOut() 메소드 (게시 된 코드 참조) 중에 버튼이 비활성화되어 다음 버튼이 선택된 것으로 표시되었습니다. 상태 드로어 블은 단순히 활성화/비활성화 상태에 대해 잘못된 이미지를 사용했습니다.

이 :

<item android:state_enabled="false" android:drawable="@drawable/prev_arrowhigh"/> 

가되어 있어야합니다 : 때문에 잘못된 이미지 낭비

<item android:state_enabled="false" android:drawable="@drawable/prev_arrow"/> 

이일 ... 는 * 한숨 *

+0

정확한 답을 표시하는 것을 잊지 마십시오. :) – SERPRO

0

해결할 수있는 해결책은보기에 onClick 속성을 설정하는 것입니다. 이 솔루션은 다음과 같습니다

에서 onCreate 방법 :

public void nextButton(View v) 
{ 
    if(_cpp == null || _cpp.nextRes.equalsIgnoreCase("")) 
    { 
     finish(); 
     return; 
    } 

    // load next page 
    _tempRes = _cpp.nextRes; 
    //start transition out animations 
    fadePageOut(); 
} 

public void prevButton(View v) 
{ 
    if(_cpp == null) 
    { 
     finish(); 
     return; 
    } 

    if (!_cpp.prevRes.equalsIgnoreCase("")) 
    { 
     // load next page 
     _tempRes = _cpp.nextRes; 
     //start transition out animations 
     fadePageOut(); 
    } 
} 

및 추가 : 안드로이드 : onclick을 = "nextButton" 안드로이드 활동에 대한

nextButton = (ImageButton) findViewById(R.id.nextButton); 
prevButton = (ImageButton) findViewById(R.id.prevButton); 

새로운 방법 : onClick = "prevButton"

xml 파일의 버튼에

+0

이것은 setOnClickListener()를 사용하는 대신 좋은 방법이지만 내 문제의 해결책은 아닙니다 (시도해 보았습니다). 내 클릭 이벤트가 Android에서 올바르게 처리되는 것 같습니다. 잘못된 버튼의 이미지를 변경하는 것입니다. 어쨌든 고마워, . – MZGS

+0

가치가있는 접근 방식을 변경하려고합니다 :) 기본 스타일로 계속 이상하게 작동하는지 확인하려면 이전 버튼의 스타일과 드로어 블을 제거하려 했습니까? – SERPRO

+0

방금 ​​Drawable 대신 ImageButton 버튼을 사용하여 시도했지만 제대로 작동합니다. 문제가 내 드로어 블 XML 파일에있을 수 있다고 생각합니까? – MZGS

관련 문제