2014-01-20 38 views
2

我环顾四周,因此如何让textview可点击,我尽其所能,但onClick方法仍未被调用。下面是从活动我的代码:可点击的textview不工作

public void onClick(View v) { 
    switch(v.getId()) { 
    case R.id.month_january: 
     Log.w("onclick", "yes"); 
     TextView temp = (TextView) findViewById(v.getId()); 
     temp.setTextColor(Color.GRAY); 
     switchNumberDays(31); 
     break; 
    case R.id.month_february:... 

我把日志,看看是否当我点击了的TextView中的onClick被调用,并记录什么。这是我的特定文本视图的XML:

<TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textSize="20dp" 
      android:layout_marginRight="20dp" 
      android:clickable="true" 
      android:id="@+id/month_january" 
      android:text="January" /> 

感谢您的任何帮助提前!之后,你

android:clickable="true" 

+0

您是否使用textview注册了监听器?像'textView.setOnClickListener(new onClickListener(){...})''。显示将onClick分配给textview的代码。 – csmckelvey

+0

@csmckelvey我以为你也可以只有一个onClick方法,并切换ID的 – epsilondelta

+0

你可以,但听众必须注册_something_。有很多方法可以实现这一点,这就是为什么我必须看到你是如何实现它的。我需要看到更多的代码(而不是你的onClick代码,外面的代码)。 – csmckelvey

回答

1

因为您的班级正在实施onClickListener界面,所以一定要在创建文本视图后注册它。

public class someActivity extends Activity implements View.OnClickListener { 
    public void onCreate(Bundle savedInstanceState) { 
     TextView textView = new TextView(); 
     textView.setOnClickListener(this); 
    } 
} 
1

喜请这样做,因为我认为你的听众不是在你的代码正确使用..

为了使您的TextView点击刚刚添加到您的TextView可以onClickListener使用此设置为它:

yourTextView.setOnClickListener(new OnClickListener() { 

@Override 
     public void onClick(View v) { 
      // do your work here 
     } 
    }); 

或另一种方式也有

public class sticks extends Activity implements View.OnTouchListener { 
    private TextView tv1; 
    private TextView tv2; 
    private TextView tv3  

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    tv1 = (TextView) findViewById(R.id.tv1); 
    tv2 = (TextView) findViewById(R.id.tv2); 
    tv3 = (TextView) findViewById(R.id.tv3); 

    // bind listeners 
    tv1.setOnTouchListener(this); 
    tv2.setOnTouchListener(this); 
    tv3.setOnTouchListener(this); 

    } 

    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
    // check which textview it is and do what you need to do 

    // return true if you don't want it handled by any other touch/click events after this 
    return true; 
    } 
}