17

它应该很简单,但我不确定哪里出了问题。我试图抓住点击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) {

        }
    });
}

你的 XMLTextView是:

<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()方法。我错过了什么?

谢谢

4

7 回答 7

40

你可以删除这个:

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-13T13:42:05.087 回答
5

这一行:android:onClick="onClick"告诉 Android 在 Activity 中查找具有此签名的方法:

public void onClick(View v)

这不是您的意图,因为您在代码中设置了 OnClickListener 并且没有在活动中为其创建专用方法。因此,您的选择是简单地android:onClick="onClick"从您的 xml 文件中删除,或者删除您创建的点击监听器并将其更改为 onClick 方法(并且最好将其名称更改为比 onClick 更好的名称...

于 2013-07-13T13:40:41.117 回答
3
 super.onCreate(savedInstanceState);
 setContentView(R.layout.other_activity);
 findViewById(R.id.TextView).setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {

    }
});
于 2018-11-16T07:49:13.310 回答
1

改变 :

 TextView modelTextview = (TextView)addView.findViewById(R.id.modelEdit);

 TextView modelTextview = (TextView)addView.findViewById(R.id.model);

如果您想使用 java 代码执行此操作,则不需要android:onClick="onClick"在您的 xml 代码中

于 2013-07-13T13:44:07.633 回答
1

如果您将代码更改为具有此结构,它将起作用:

public void runNextTask(){
   ...
}

public void onClick(View v) {

}

正如您在 xml 中告诉您捕获模块中文本视图 ( android:onClick="onClick")的点击onClick一样,您不需要在 java 代码中添加 onClick 侦听器。

于 2013-07-13T13:44:40.603 回答
0

对于每个视图组件,我们可以像 TextView 一样调用 setOnclickLister() 也调用

textview.setOnclickListener(new setOnclickListener
                           {
                                public void onclick()
                                                   {


                                                    }
                           }
                            );``
于 2018-04-18T05:17:45.193 回答
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" />
于 2021-06-06T11:38:19.370 回答