它应该是直截了当的,但我不确定哪里出了问题。
我试着抓住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()
方法。
我错过了什么?
由于
答案 0 :(得分:30)
您可以删除此内容:
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);
答案 1 :(得分:4)
这一行:android:onClick="onClick"
告诉Android查看具有此签名的方法的活动:
public void onClick(View v)
这不是您的意图,因为您已在代码中设置了OnClickListener,并且未在活动中为其创建专用方法。
因此,您可以选择从xml文件中删除android:onClick="onClick"
,或删除您创建的单击侦听器,并将其更改为onClick方法(并且最好将其名称更改为onClick ... < / p>
答案 2 :(得分:2)
super.onCreate(savedInstanceState);
setContentView(R.layout.other_activity);
findViewById(R.id.TextView).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
}
});
答案 3 :(得分:1)
更改
TextView modelTextview = (TextView)addView.findViewById(R.id.modelEdit);
到
TextView modelTextview = (TextView)addView.findViewById(R.id.model);
如果你想用java代码执行此操作,则xml代码中不需要android:onClick="onClick"
答案 4 :(得分:1)
如果您将代码更改为具有此结构,则它将起作用:
public void runNextTask(){
...
}
public void onClick(View v) {
}
正如您在xml中告诉捕获android:onClick="onClick"
模块中文本视图(onClick
)的单击时,您不需要在Java代码中添加onClick侦听器。 / p>
答案 5 :(得分:0)
对于每个视图组件,我们可以像这样调用setOnclickLister() TextView也可以调用
textview.setOnclickListener(new setOnclickListener
{
public void onclick()
{
}
}
);``
答案 6 :(得分:0)
这是因为布局文件中的 onClick 属性。从布局文件中删除以下行,
android:onClick="onClick"
更新后的TextView会是这样,
<TextView
android:id="@+id/model"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/Tracker_model"
android:clickable="true" />