Android - 用于TextView的setOnClickListener

时间:2013-07-13 13:35:40

标签: android onclicklistener

它应该是直截了当的,但我不确定哪里出了问题。 我试着抓住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()方法。 我错过了什么?

由于

7 个答案:

答案 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" />