2012-03-24 3 views
1

Android SDK 도구를 수정하여 17로 개정했으며 Eclipse를 연 후에 Eclipse의 'Problems'보기에 새 오류 목록이 있음을 발견했습니다. 최신 정보. 이러한 오류는 단추에 대한 onClick 특성을 정의한 XML 레이아웃 파일에있었습니다. 에 마우스 오버 오류 메시지 예 :Android SDK 도구 Rev.17 - onClick - 해당 메소드 핸들러를 찾을 수 없음

반환 "대응 방법 핸들러 '공공 무효 @ 문자열/timespanDefinition_btnSave_Click (android.view.View에서)이'을 (를) 찾을 수 없습니다". 해당 이벤트 핸들러와 문자열 표현을 이미 정의했습니다. 이 문제의 원인과 해결책은 무엇입니까?

일부 코드 :

XML 레이아웃

<ToggleButton 
     android:id="@+id/timespanDefinition_tglVibration" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:checked="true" 
     android:onClick="@string/timespanDefinition_tglVibration_Click" 
     android:saveEnabled="true" /> 

활동 XML 레이아웃을

public class TimespanDefinitionActivity extends Activity 

{

// -- Attributes -- // 

private long mRowId = -1; 
private StringBuilder mBitWeekDays; 
private String mTitle; 

private EditText txtTitle; 
private TabHost tabHost; 
private TimePicker tmepkrStart; 
private TimePicker tmepkrEnd; 
private CheckBox[] weekDays; 
private SeekBar skbrVolume; 
private ToggleButton tglVibration; 

// -- Class Events -- // 

@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.timespan_definition); 

    initializeResources(); 

    Bundle extras = getIntent().getExtras(); 

    // Get the time-span Row ID 
    mRowId = (extras != null) ? extras.getLong(RVSUtilities.getDefaultPackage() + TimespanScheduleTable.KEY_ROWID) 
      : -1; 

    populateResources(); 
} 

// -- User Events -- // 

public void tglVibration_Click(View v) 
{ 
    if (((ToggleButton) v).isChecked()) 
    { 
     Vibrator vibrate = (Vibrator) getSystemService(VIBRATOR_SERVICE); 
     vibrate.vibrate(1000); 
    } 
} 

할 strings.xml 팽창 :

<string name="timespanDefinition_tglVibration_Click">tglVibration_Click</string> 

참고 : 응용 프로그램은

(10) 감사합니다 안드로이드 특별히 2.3.3 구글의 API 버전을 목표로하고있다.

답변

5

이 문제의 근본 원인은 무엇입니까?

원인은 메서드 이름에 문자열 리소스를 사용하기 때문입니다.

해결 방법은 문자열 리소스를 제거하고 메서드 이름을 특성에 직접 넣는 것입니다.

업데이트 : : 마커가 사라지지 않으면 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 Android Tools> Lint Markers 지우기를 선택하십시오.

+0

"실행 린트는 일반적인 오류 확인"나는 온 클릭가 속성 변경 남아 있었다. 그러나 오류가 새 특성 값으로 업데이트되지 않은 것처럼 보입니다. 따라서 프로젝트를 정리하고 다시 빌드하고 Eclipse를 닫고 다시 열어 보았습니다. 오류는 동일하게 유지되었습니다. "해당 메서드 핸들러 'public void @ string/timespanDefinition_tglVibration_Click'android.view.View 'not found'모든 아이디어? – Kurt

+0

@ Kurt : 아니요, 간단히 파일을 변경하면 프로젝트를 정리하거나 Eclipse를 다시 시작하지 않고 문제를 해결할 수 있습니다. 둘 이상의 위젯에'tglVibration_Click'을 사용하고 있습니까? 다른 위젯에 문자열 리소스가있을 수 있습니다. – CommonsWare

+0

불행히도 아니요, 여러 위젯에 동일한 onClick 이벤트 이름을 사용하지 않고 있습니다. 'tglVibration_Click'에 대한 작업 영역에서 한 번의 검색 결과 만 발견되었습니다. Android SDK 도구를 업데이트 한 후이 문제가 어떻게 나타나는지 이해할 수 없습니다. – Kurt

1

업데이트/설치 직후 오류가 표시됩니다. 그러나 Lint를 다시 실행하면 문제가 해결됩니다.

오른쪽 프로젝트를 클릭 -> 안드로이드 도구 -> 클릭의 onclick = "tglVibration_Click을" '하지만 모든 오류 때문에 정맥에 있었다 :'안드로이드 :