当前位置: 代码迷 >> Android >> textview的onclick点击报错,该怎么解决
  详细解决方案

textview的onclick点击报错,该怎么解决

热度:48   发布时间:2016-04-28 03:39:05.0
textview的onclick点击报错

------解决思路----------------------
project --->clean一下,能不能把logCat截图截全了。
------解决思路----------------------
onclick方法中设置点击方法不加括号

引用:
        <TextView
            android:id="@+id/text1"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight="1.0"
            android:gravity="center"
            android:text="@string/home"
            android:textColor="#000000"
            android:textSize="12.0dip"
            android:clickable="true"
            android:onClick="SendIndex()" />

    public void SendIndex(View v)
    {
     Toast.makeText(this, "再点击一次退出", Toast.LENGTH_LONG).show();
    }

------解决思路----------------------
NoSuchMethod....方法没找到,或者没有匹配上,SendIndex(View v)去掉“View v”试试吧
------解决思路----------------------
android:onClick="SendIndex()"

这里不需要括号,只要引号里的值跟方法名一样就行
------解决思路----------------------
引用:
嗯嗯 ~~ 谢谢各位大侠了 ,确实是android:onClick="SendIndex()"这里的问题,去掉括号就可以了

再写点击事件的话最好用监听吧
------解决思路----------------------
引用:
Quote: 引用:

Quote: 引用:

嗯嗯 ~~ 谢谢各位大侠了 ,确实是android:onClick="SendIndex()"这里的问题,去掉括号就可以了

再写点击事件的话最好用监听吧

先前看的事例用的就是监听,不过就是报错 ,所以我就试试这种方式

上一层里说了
  private void InitTextView() {
        t1 = (TextView) findViewById(R.id.text1);
        t2 = (TextView) findViewById(R.id.text2);
        t3 = (TextView) findViewById(R.id.text3);

        t1.setOnClickListener(new MyOnClickListener(0));
        t2.setOnClickListener(new MyOnClickListener(1));
        t3.setOnClickListener(new MyOnClickListener(2));
    }
    /**
     * 头标点击监听
*/
    public class MyOnClickListener implements View.OnClickListener {
        private int index = 0;

        public MyOnClickListener(int i) {
            index = i;
        }

        @Override
        public void onClick(View v) {
           Toast.makeText(this, "再点击一次退出"+v.getId(), Toast.LENGTH_LONG).show();
        }
    };  

MyOnClickListener类里面的onClick方法中的this有问题,用activity的类名.this
------解决思路----------------------
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

Quote: 引用:

Quote: 引用:

嗯嗯 ~~ 谢谢各位大侠了 ,确实是android:onClick="SendIndex()"这里的问题,去掉括号就可以了

再写点击事件的话最好用监听吧

先前看的事例用的就是监听,不过就是报错 ,所以我就试试这种方式

上一层里说了
  private void InitTextView() {
        t1 = (TextView) findViewById(R.id.text1);
        t2 = (TextView) findViewById(R.id.text2);
        t3 = (TextView) findViewById(R.id.text3);

        t1.setOnClickListener(new MyOnClickListener(0));
        t2.setOnClickListener(new MyOnClickListener(1));
        t3.setOnClickListener(new MyOnClickListener(2));
    }
    /**
     * 头标点击监听
*/
    public class MyOnClickListener implements View.OnClickListener {
        private int index = 0;

        public MyOnClickListener(int i) {
            index = i;
        }

        @Override
        public void onClick(View v) {
           Toast.makeText(this, "再点击一次退出"+v.getId(), Toast.LENGTH_LONG).show();
        }
    };  

MyOnClickListener类里面的onClick方法中的this有问题,用activity的类名.this

你说的是Toast.makeText(this, "再点击一次退出"+v.getId(), Toast.LENGTH_LONG).show();
这一句里面的吗?

这个是我为了做测试后来加上去的,去掉这句也是报错的



InitTextView() 这个我是放在onCreate里面最后一行,不知道 位置影响执行吗?不过我都试过几个位置,都是报错


你确定代码编译过去了?
------解决思路----------------------
   Toast.makeText(this, "再点击一次退出"+v.getId(), Toast.LENGTH_LONG).show();
this改成(你的activity).this
------解决思路----------------------
为什么不用监听? 很简单的。

代码:
...
TextView tv1 = (TextView)findViewById(R.id.tv1);
        tv1.setOnClickListener(new View.OnClickListener() 
        {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
       Log.d("Logcat Debug", "Debug: You clicked TextView...");
    Toast.makeText(MainActivity.this, "再点击一次退出: "+v.getId(), Toast.LENGTH_LONG).show();

}
});
...
------解决思路----------------------
其实楼上的方法是最好也最常用的,代码条理清晰易于修改。楼主既然已经学Android开发,编码规范也最好参考一下,不容易出些莫名其妙的问题。
如果还想在源代码段上修改,试试下面这样的方式,看看怎么样:
private void InitTextView() {
        t1 = (TextView) findViewById(R.id.text1);
        t2 = (TextView) findViewById(R.id.text2);
        t3 = (TextView) findViewById(R.id.text3);
        
        MyOnClickListener myonclickListener=new MyOnClickListener( );
        t1.setOnClickListener(myonclickListener);
        t2.setOnClickListener(myonclickListener);
        t3.setOnClickListener(myonclickListener);
    }
    /** * 头标点击监听*/
    public class MyOnClickListener implements View.OnClickListener {
        @Override
        public void onClick(View v) {
           switch(v.getId())
    {
     case R.id.text1:Toast.makeText(MainActivity.this, "再点击一次退出"+v.getId(), Toast.LENGTH_LONG).show();
     case R.id.text2:Toast.makeText(MainActivity.this, "再点击一次退出"+v.getId(), Toast.LENGTH_LONG).show();
             case R.id.text3:Toast.makeText(MainActivity.this, "再点击一次退出"+v.getId(), Toast.LENGTH_LONG).show();
            }
        }
    }; 
  相关解决方案