我的视图有onClick
属性:
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="hey"
android:onClick="showCity" />
这与此方法相对应:
public void showCity(View view) {
Intent intent = new Intent(this, CityActivity.class);
startActivity(intent);
}
但是,我有一个菜单项,我想打开CityActivity
:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_city:
showCity();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
但是,这不起作用,因为它在调用view
时缺少showCity()
参数,我不确定在这种情况下它应该是什么。
如何在两种情况下修改它?
答案 0 :(得分:4)
使用以下代码替换onOptionsItemSelected
代码:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_city:
showCity(null);
return true;
default:
return super.onOptionsItemSelected(item);
}
}
您showCity
必须具有View
参数,而不能将null
作为参数传递给onClick()
方法。
答案 1 :(得分:1)
由于您未使用view
参数,因此您只需将null
传递给它即可使用
答案 2 :(得分:1)
只需通过null
,即showCity(null)
答案 3 :(得分:0)
将id属性写入xml中的textview,如下所示,还可以删除TextView的onClick属性:
<TextView
android:id="@+id/tShowCity"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="hey"
/>
现在,在活动的onCreate()方法中,启动TextView,如下所示,并为TextView编写单击侦听器,如下所示:
TextView tv = (TextView)findViewById(R.id.tShowCity);
tv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showCity();
}
});
现在定义您的show city方法,如下所示:
public void showCity() {
Intent intent = new Intent(this, CityActivity.class);
startActivity(intent);
}
现在,上述方法也可以在您的菜单中使用,并且可以正常运行:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_city:
showCity();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
答案 4 :(得分:0)
如果您不想使用View
属性..已经答案,您可以将null
值传递给您的showCity()
showCity(null);
但是,如果您想在showCity()
中使用特定的视图属性,则可以通过findViewById()
method..like传递带有id的视图。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_settings:
showCity(this.findViewById(R.id.textview1));
return true;
default:
return super.onOptionsItemSelected(item);
}
}
答案 5 :(得分:0)
如果您没有使用视图,那么为什么要添加方法参数...
public void showCity(View view){
Intent intent = new Intent(this,CityActivity.class);
startActivity(意向);
}
...看
public void showCity() {
Intent intent = new Intent(this, CityActivity.class);
startActivity(intent);
}
简单..... :)