这应该是直截了当的,但我不确定哪里出了问题。我试着用以下命令来捕捉TextView
上的点击:
public void runNextTask(){
final View addView = getLayoutInflater().inflate(R.layout.addnewtracker, null);
final TrackerInfo newInfo = new TrackerInfo();
//set up for model selection
TextView modelTextview = (TextView)addView.findViewById(R.id.modelEdit)
modelTextview.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
}
});
}
用于TextView
的XML是:
<TextView
android:id="@+id/model"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/Tracker_model"
android:clickable="true"
android:onClick="onClick"/>
但是当我单击TextView
时,它并没有进入onClick()
方法。我遗漏了什么?
谢谢
发布于 2013-07-13 21:42:05
您可以删除以下内容:
android:onClick="onClick"
或者,删除以下内容:
modelTextview.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
}
});
并拥有以下内容:
public void onClick(View v)
{
// do something
}
android:onClick="onClick"/>
//为了避免混淆,最好重命名该方法
此外,您还拥有以下内容:
<TextView
android:id="@+id/model" // id is model
所以初始化你的TextView
如下所示:
TextView modelTextview = (TextView)addView.findViewById(R.id.model);
发布于 2013-07-13 21:40:41
这一行:android:onClick="onClick"
告诉Android在activity中查找带有这个签名的方法:
public void onClick(View v)
这不是您的本意,因为您已经在代码中设置了OnClickListener,并且没有在活动中为它创建专用方法。因此,您的选择要么是简单地从xml文件中删除android:onClick="onClick"
,要么删除已创建的单击监听器并将其更改为onClick方法(最好将其名称更改为比onClick更好的名称……
发布于 2018-11-16 15:49:13
super.onCreate(savedInstanceState);
setContentView(R.layout.other_activity);
findViewById(R.id.TextView).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
}
});
https://stackoverflow.com/questions/17630697
复制相似问题