`
bk_lin
  • 浏览: 336576 次
社区版块
存档分类
最新评论

findViewById报错

阅读更多
通過ID找到Layout的 VIEW控件。,比如你的控件Button ID為"@+id/button01"   就可以通過這樣Button btn=(Button)findViewById(R.id.button01")找到控件。。這時這個btn就是代表這個按鈕。。你可以理解成JS的getElementById()。
    Android中FindViewById()是一个非常常用的函数,位于android.app.Activity包中。该函数利用我们在XML文件中定义的View的id属性来获取相应的View对象。findViewById()属于API Level 1, 对应的android版本是android1.0,由此,可以看出,该函数是android早期版本中就有的。顺便说一下, android目前市场上已商用的版本及其对应的API Level如下:
   android 1.0             API Level 1
   android 1.1             API Level 2
   android 1.5             API Level 3
   android 1.6             API Level 4
   android 2.0             API Level 5
   android 2.0.1          API Level 6
   android 2.1             API Level 7
   android 2.2             API Level 8
1、参数错误:findViewById的参数是一个View的ID,如果在XML文件中没定义相应的ID,则程序会
             善意的告诉你:XXX cannot be resulved。此时,补充定义就可以了。
2、未指定调用布局:findViewById()的调用与具体的布局有关,默认的是main.xml中的布局,函数前
                 没有布局指示。不过,当我们在main.xml描述的布局中,添加其它布局时,利用该函数获
                 取所添加布局中的View,则需在调用时,添加布局名,形式如下:
                 addLayout.findViewById(),如果不这么做,程序编译时有时不会报错,但运行时会
                 提示遇到异常,并强制关闭应用。
3、命名冲突:这个错误可能不是很常见,不过,要是没有遇到过,猛的来这么一下,还真让人 有点懵。
                 呵呵,本人就犯过这样的错误。解释下,这里的命名冲突是指当前工程中定义的类与
                 android在Framework中提供的名字相同,这样的话,当前工程文件中,会优先使用本工
                 程中的定义。当然,使用findViewById()函数时,发生这种错误必须满足以下几个条件:
                 一是:需要在当前工程中利用ID(xml中定义)来查找对应的View对象;
                 二是:查找的View类名恰好与本工程中已有的类定义相同
                 三是:同名的两个类实例化后产生的对象类型不同,如:一个是View,一个是Activity。
分享到:
评论

相关推荐

    Android代码-PieChartView

    PieChartView pieChartView = (PieChartView) findViewById(R.id.pie_chart); List pieceDataHolders = new ArrayList(); pieceDataHolders.add(new PieChartView.PieceDataHolder(100,0xFF77CCAA, "今天,1")...

    Android开发常见错误小结

    在intent中添加了一个内容,在调用getStringExtra读取的时候,总是报错。代码如下: // back按钮 Button btnBack = (Button) findViewById(R.id.btnActivity2Back); btnBack.setOnClickListener(new ...

    setContentView学习例子

    Button button = findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { setContentView(R.layout.activity_second); } }); ``` 在这...

    ANDROID百度地图开发简单实例

    MapView mapView = findViewById(R.id.bmapView); mapView.onCreate(savedInstanceState); BaiduMap baiduMap = mapView.getMap(); baiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL); // 设置为普通地图 ...

    androidstudio3.0使用butterknife报错解决的解决方法

    在Android开发过程中,ButterKnife是一款非常流行的视图注入库,它可以帮助开发者简化代码,减少大量的findViewById()调用。然而,在使用Android Studio 3.0及以上版本时,可能会遇到一个常见的错误,即“Annotation...

    Android代码-功能强大的自定义图表库,使用简单,支持扩展。

    指定java版本,否则会报错: android { ... compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } ... } 图表使用 1、南丁格尔玫瑰图 ...

    CircularFloatingActionMenu

    CircularFloatingActionMenu menu = findViewById(R.id.fab_menu); menu.setClosedOnTouchOutside(true); menu.setOnMenuItemClickListener(new CircularFloatingActionMenu.OnMenuItemClickListener() { @...

    MenuAnimation-可以弹出子菜单的Menu.zip

    2. 绑定布局并添加子菜单FrameLayout frameLayout = (FrameLayout) findViewById(R.id.container); PromotedActionsLibrary promotedActionsLibrary = new PromotedActionsLibrary(); ...

    Android 官方推荐 : DialogFragment 创建对话框

    dialogView.findViewById(R.id.button_cancel).setOnClickListener(v -> { // 用户点击取消按钮后的操作 }); ``` 博客实例代码`la_dialogfragment`可能包含了上述步骤的实现,你可以查看其具体细节。如果有任何...

    FragmentView

    ListView lv = (ListView) v.findViewById(R.id.fragment1List); lv.setAdapter(sa); lv.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0...

    VerticalAdapter

    VerticalViewPager viewPager = findViewById(R.id.vertical_view_pager); MyVerticalAdapter adapter = new MyVerticalAdapter(getSupportFragmentManager()); viewPager.setAdapter(adapter); ``` 确保你的...

    编译注解实现bindView/contentView框架的Demo

    传统的做法是通过`findViewById()`方法来查找并赋值,但这种方式繁琐且容易出错。为了解决这个问题,开发者们提出了各种解决方案,其中一种就是使用编译时注解(Compile-Time Annotation)配合处理器来自动化这个...

    Android关于HTML页面与Native方法相互调用

    WebView webView = (WebView) findViewById(R.id.webview); webView.loadUrl("file:///android_asset/WebViewLocalHtml.html"); ``` 三、JavaScript与Java交互:JavaScriptInterface 为了使HTML页面能够调用Android...

    Android使用Google推荐的联网框架Volley,让连接网络更加简单

    NetworkImageView imageView = (NetworkImageView) findViewById(R.id.imageView); imageView.setImageUrl(url, imageLoader); ``` 在"Volley用法"这个主题下,开发者可以深入学习如何处理更复杂的请求,例如自定义...

    基于Java + opengl 实现绘制的蓝牙心电图表(ECG),包含洛伦兹散点图、心电图(实时、静止)

    ecgChartView = findViewById(R.id.ecgChart); ecgChartView.setFrameRate(0); ecgChartView.setTouchable(true); ecgChartView.setRenderMode(ISurface.RENDERMODE_WHEN_DIRTY); ( 【资源声明】:本资源...

    Kotlin初探与集成Android项目

    findViewById(R.id.content).setOnClickListener { Log.d("MainActivity", "$it was clicked") } ``` 4. **方法扩展:** - Kotlin 允许开发者扩展现有类的功能而无需继承或使用装饰者模式。 - 例如,可以为 ...

    Android代码-MovingCircleView

    注:至少给宽或者高设置确定的值,不能同时设置为wrap_content,否则报错 2.Activity中获取实例,设置初始的进度,和点击时候要变到的进度 mMovingDotView = (MovingDotView) findViewById(R.id.main_movingView); ...

    android的插件:android-butterknife-zelezny-master

    在传统的Android开发中,我们需要在每个Activity或Fragment中手动查找并设置视图,如`findViewById()`。但使用Butter Knife,我们可以通过注解的方式实现这一过程,减少重复代码,提高代码可读性。 #### 注解 1. `...

    Fragment之间通过Activity通信

    btnOpenFragmentB = view.findViewById(R.id.btn_open_fragment_b); btnOpenFragmentB.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 创建并添加Fragment B ...

    Android databinding 双向绑定

    通过这种方式,开发者可以在代码中直接操作这些视图,而无需通过findViewById()方法。此外,DataBinding还支持表达式语言,使得在XML中进行复杂的逻辑操作成为可能。 **2. 双向绑定的原理** 双向绑定是DataBinding...

Global site tag (gtag.js) - Google Analytics