android中的findViewById是怎么回事啊,找不到控件,是null

softneo 2014-06-19 01:50:37

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

if (savedInstanceState == null) {
getFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment()).commit();
}
Button btn = (Button)(MainActivity.this.findViewById(R.id.bt_Num));
btn.setOnClickListener(new MyListener());
}

上面的代码没有任何编译错误,控件绝对都有的。
求解释!
...全文
11277 20 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
softneo 2014-06-20
  • 打赏
  • 举报
回复
引用 19 楼 enson16855 的回复:
1、R 要指向自定义包里面的类,不能使用android系统的R 2、如果view是定义在fragment里面,参照:http://blog.csdn.net/enson16855/article/details/27339947
应该就是main页面没有f页面的元素,所以才找不到。看了帖子,谢谢你了。
Mr-稻帅 2014-06-20
  • 打赏
  • 举报
回复
1、R 要指向自定义包里面的类,不能使用android系统的R 2、如果view是定义在fragment里面,参照:http://blog.csdn.net/enson16855/article/details/27339947
xp19881115 2014-06-20
  • 打赏
  • 举报
回复
检查下import的时候R是不是对的
  • 打赏
  • 举报
回复
引用 15 楼 Huang__Xiao 的回复:
这个是自动生成的,总不能随意改吧。改了后报“非法参数异常”
新版的玩不惯就去下个旧版的Eclipse吧
流水年华ye 2014-06-19
  • 打赏
  • 举报
回复
是不是你的R文件中没有这个id呀,
softneo 2014-06-19
  • 打赏
  • 举报
回复
引用 13 楼 hjywyj 的回复:
 setContentView(R.layout.activity_main);
 
        if (savedInstanceState == null) {
            getFragmentManager().beginTransaction()
                    .add(R.id.container, new PlaceholderFragment()).commit();
        }
将以上代码改为 setContentView(R.layout.fragment_main);
这个是自动生成的,总不能随意改吧。改了后报“非法参数异常”
softneo 2014-06-19
  • 打赏
  • 举报
回复
引用 12 楼 coffeeRoy 的回复:
按钮命名出错了,只能是小写的字母,可以带下划线,我也遇到过这样的问题。你的button肯定没有生成相应的id。
一样的,没什么区别。
  • 打赏
  • 举报
回复
 setContentView(R.layout.activity_main);
 
        if (savedInstanceState == null) {
            getFragmentManager().beginTransaction()
                    .add(R.id.container, new PlaceholderFragment()).commit();
        }
将以上代码改为 setContentView(R.layout.fragment_main);
coffeeRoy 2014-06-19
  • 打赏
  • 举报
回复
按钮命名出错了,只能是小写的字母,可以带下划线,我也遇到过这样的问题。你的button肯定没有生成相应的id。
softneo 2014-06-19
  • 打赏
  • 举报
回复
在建立工程的时候,默认有fragment_main和activity_main,前者作为后者的一部分加载进去的。但是我很奇怪,为什么前者没加上去。从而导致Button获取不到。而,如果直接把这些控件放到后者中,却可以找到。 具体原因还不知道为什么这样。 吐槽:总觉得吧,与Java相关的东西都不稳定,eclipse也是、android也是。不知道你们玩Java是怎么过来的,千锤百炼吗?
vector1986 2014-06-19
  • 打赏
  • 举报
回复
把android:id="@+id/bt_Num"中的bt_Num改成bt,然后保存一下。 再将bt改回bt_Num,然后保存一下。 应该就可以了
softneo 2014-06-19
  • 打赏
  • 举报
回复
这个是控件的xml文件
softneo 2014-06-19
  • 打赏
  • 举报
回复

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="me.softlmis.phone.MainActivity$PlaceholderFragment" >

    <Button
        android:id="@+id/bt_Num"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="52dp"
        android:text="@string/dail" />
softneo 2014-06-19
  • 打赏
  • 举报
回复
引用 6 楼 ms03001620 的回复:
把 R.layout.activity_main 贴出来看看

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/container"
    
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="me.softlmis.phone.MainActivity"
    tools:ignore="MergeRootFrame" />


小馬過河 2014-06-19
  • 打赏
  • 举报
回复
把 R.layout.activity_main 贴出来看看
箍心而行 2014-06-19
  • 打赏
  • 举报
回复
引用 3 楼 Huang__Xiao 的回复:
Button也是继承View的,都是正确的。 SDK也是官网下载的。
如果是自己项目的R 那就 project-clean 选中自己项目 clean一下
箍心而行 2014-06-19
  • 打赏
  • 举报
回复
引用 2 楼 Huang__Xiao 的回复:
[quote=引用 1 楼 a85454597 的回复:] 看看R文件 是不是导错包了
你指的导错是什么意思? findViewById没错的。[/quote] 看看R文件 是不是你这个项目的 就是类最上面的import
softneo 2014-06-19
  • 打赏
  • 举报
回复
Button也是继承View的,都是正确的。 SDK也是官网下载的。
softneo 2014-06-19
  • 打赏
  • 举报
回复
引用 1 楼 a85454597 的回复:
看看R文件 是不是导错包了
你指的导错是什么意思? findViewById没错的。
箍心而行 2014-06-19
  • 打赏
  • 举报
回复
看看R文件 是不是导错包了

80,472

社区成员

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

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