请教关于View的android:onClick的问题

I Du 2013-10-28 01:17:30
在下面添加android:onClick总是出错
<AutoCompleteTextView
android:id="@+id/txtsex"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:ems="10"
android:text=""
android:onClick="setSex" />

错误信息:

java.lang.NullPointerException   
at android.widget.AutoCompleteTextView$PassThroughClickListener.access$302   
at android.widget.AutoCompleteTextView.setOnClickListener   
at android.view.View.<init>   
at android.widget.TextView.<init>   
at android.widget.EditText.<init>   
at android.widget.AutoCompleteTextView.<init>   
at android.widget.AutoCompleteTextView.<init>   
at java.lang.reflect.Constructor.newInstance   
at android.view.LayoutInflater.createView   
at android.view.LayoutInflater.onCreateView   
at android.view.LayoutInflater.createViewFromTag   
at android.view.LayoutInflater.rInflate_Original   
at android.view.LayoutInflater_Delegate.rInflate   
at android.view.LayoutInflater.rInflate   
at android.view.LayoutInflater.rInflate_Original   
at android.view.LayoutInflater_Delegate.rInflate   
at android.view.LayoutInflater.rInflate   
at android.view.LayoutInflater.rInflate_Original   
at android.view.LayoutInflater_Delegate.rInflate   
at android.view.LayoutInflater.rInflate   
at android.view.LayoutInflater.inflate   
at android.view.LayoutInflater.inflate

对应的java页面的函数
public void setSex(View view)
{
final EditText txtsex = (EditText)this.findViewById(R.id.txtsex);
String[] strSex = getResources().getStringArray(R.array.sex);
AlertDialog.Builder builder;
builder = new AlertDialog.Builder(this);
builder.setTitle("选择性别");
builder.setCancelable(false);
builder.setSingleChoiceItems(strSex, 0, new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
index = which;
}
});
builder.setPositiveButton(R.string.confirm, new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
txtsex.setText(getResources().getStringArray(R.array.sex)[index]);
}
});
builder.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
txtsex.setText("");
}
});
builder.create().show();
}
...全文
262 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
依然绿茶 2013-10-28
  • 打赏
  • 举报
回复
引用 7 楼 leyo6yilin 的回复:
[quote=引用 1 楼 tantahe 的回复:] xml定义android:onClick就会报这个错,代码里注册就不会,是有点奇怪。 你在代码里注册吧。
恩,可以了。再问个问题,你用过Android-studio吗,为什么编译的程序里面汉字会显示乱码啊[/quote] 没用过,谷歌推出这个IDE没多久,据一些人反馈还有些bug,有待完善。我是从eclipse转到Intellij IDEA的,感觉比Eclipse强大,好用多了,stdio基于这个的,并且idea支持中文编码,而且它的智能提示、集成版本控制非常强大,推荐楼主使用!
I Du 2013-10-28
  • 打赏
  • 举报
回复
引用 8 楼 tantahe 的回复:
[quote=引用 7 楼 leyo6yilin 的回复:] [quote=引用 1 楼 tantahe 的回复:] xml定义android:onClick就会报这个错,代码里注册就不会,是有点奇怪。 你在代码里注册吧。
恩,可以了。再问个问题,你用过Android-studio吗,为什么编译的程序里面汉字会显示乱码啊[/quote] 没用过,我一直用eclipse[/quote]啊!!!终于好了,全是英文,不给力啊(虽然有汉化包,但我不用,锻炼自己)。。。。。。。。。。。。。。。。。。。。。推荐你用这个软件,Google自己的,比Eclipse流畅
tantahe 2013-10-28
  • 打赏
  • 举报
回复
引用 7 楼 leyo6yilin 的回复:
[quote=引用 1 楼 tantahe 的回复:] xml定义android:onClick就会报这个错,代码里注册就不会,是有点奇怪。 你在代码里注册吧。
恩,可以了。再问个问题,你用过Android-studio吗,为什么编译的程序里面汉字会显示乱码啊[/quote] 没用过,我一直用eclipse
I Du 2013-10-28
  • 打赏
  • 举报
回复
引用 1 楼 tantahe 的回复:
xml定义android:onClick就会报这个错,代码里注册就不会,是有点奇怪。 你在代码里注册吧。
恩,可以了。再问个问题,你用过Android-studio吗,为什么编译的程序里面汉字会显示乱码啊
罗小辉 2013-10-28
  • 打赏
  • 举报
回复
引用 5 楼 ncepu307 的回复:
貌似在xml中定义android:onClick只能用于Button类(包括其子类),否则会报错,楼主最好是在代码中注册onClick事件,3楼正解!
button和其他控件还是有点区别的,我之前在GridView中在每个子View添加Button,点击事件竟然木有用
依然绿茶 2013-10-28
  • 打赏
  • 举报
回复
貌似在xml中定义android:onClick只能用于Button类(包括其子类),否则会报错,楼主最好是在代码中注册onClick事件,3楼正解!
I Du 2013-10-28
  • 打赏
  • 举报
回复
引用 3 楼 tantahe 的回复:
把android:onClick="setSex"去掉,在activity的onCreate方法最后面加上
        ((AutoCompleteTextView)findViewById(R.id.txtsex)).setOnClickListener(new OnClickListener() {
            
            @Override
            public void onClick(View v) {
                setSex(v);
            }
        });
呦西,我试一下
tantahe 2013-10-28
  • 打赏
  • 举报
回复
把android:onClick="setSex"去掉,在activity的onCreate方法最后面加上
        ((AutoCompleteTextView)findViewById(R.id.txtsex)).setOnClickListener(new OnClickListener() {
            
            @Override
            public void onClick(View v) {
                setSex(v);
            }
        });
I Du 2013-10-28
  • 打赏
  • 举报
回复
引用 1 楼 tantahe 的回复:
xml定义android:onClick就会报这个错,代码里注册就不会,是有点奇怪。 你在代码里注册吧。
在哪搞?请赐教!
tantahe 2013-10-28
  • 打赏
  • 举报
回复
xml定义android:onClick就会报这个错,代码里注册就不会,是有点奇怪。 你在代码里注册吧。

80,349

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧