2012-03-24 59 views
1

我更新了Android SDK Tools至版本17,并且在打开Eclipse之后,我在“问题”视图中发现了一些新错误列表,更新。这些错误出现在我已经为按钮定义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> 

注:应用定位的Android 2.3.3谷歌专门API版本10

谢谢。

回答

5

这个问题的原因和解决方法是什么?

原因是您使用方法名称的字符串资源。

解决方法是摆脱字符串资源并直接将方法名称放入属性中。

UPDATE:如果标记不消失,请右键单击项目,然后选择“Android工具”>“清除Lint标记”。

+0

,我改变了onclick属性来:'机器人:的onClick =“tglVibration_Click”'但所有的静脉因错误依然存在。但是,似乎错误没有用新的属性值更新。因此,我清理并重建了该项目,甚至尝试关闭并重新打开Eclipse,但错误依然如此:“相应的方法处理程序”public void @ string/timespanDefinition_tglVibration_Click(android.view.View)'not found“任何想法? – Kurt 2012-03-24 17:20:41

+0

@Kurt:不,我只希望简单地改变文件就可以解决你的问题,更不用说清理项目或重新启动Eclipse了。你是否在'tglVibration_Click'中为多个小部件使用了'tglVibration_Click',你可能还有另一个小部件的字符串资源? – CommonsWare 2012-03-24 17:24:16

+0

不幸的是,我没有为多个窗口小部件使用相同的onClick事件名称,在tglVibration_Click的工作空间中只发现了一个搜索结果。我无法理解在更新Android SDK工具后出现这个问题的方式。 – Kurt 2012-03-24 17:38:01

1

更新/安装后不久显示错误。但重新运行林特纠正了这个问题。

右键单击项目 - > Android的工具 - >点击“运行lint:检查常见的错误”

相关问题