`

android项目Java文件找界面元素findViewById(R.id.*);

阅读更多

   写android的新手都知道,用findViewById()找界面元素,一般默认为this.findViewById(R.id.*);的形式,this为当前的主界面。但是,如果不是主界面对应的xml文件的id时该怎么办呢   ?

   两个视图,一个MainActivity,一个AlertDialog,分别对应着main.xml文件和second.xml文件.

main.xml

 <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button1" />

second.xml

 <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button2" />

在主Activity里使用 Button button1=(Button)this.findViewById(R.id.button1);

在创建对话框的 方法里面 protected Dialog onCreateDialog(int id){

                                        AlertDialog.Builder builder=new AlertDialog.Builder(this);   //Builder为对话框的辅助类

                   View layout=(View)getLayoutInflater().inflate(R.layout.second);

         

                Button   button2=(Button)Layout.findViewById(R.id.button2);

                        builder.setView(layout);

                        ........增加其余信息

               return builder.create();

                                        }

可以发现,如黄色部分,找button1和button2 对应的findViewById方法对应的对象是不同的,一个是this,一个是Layout。如果改成utton2=this.findViewById(R.id.button2);,则android Application找不到对应id,以为主xml文件没有button,系统就会报错,出现空指针异常!所以findViewById在使用前有必要声明是在哪个xml文件里找id。

 

 

 

  这个错误困扰我一段时间了,今天老师才讲,希望与君共勉,一同进步!

分享到:
评论

相关推荐

    无人机Android-UI布局文件与java文件关联.doc

    实验报告——无人机Android-UI布局文件与Java文件关联 在移动应用开发中,尤其是在Android平台上,用户界面(UI)的设计和交互是至关重要的。本实验旨在帮助学生掌握Android UI布局文件与Java代码之间的关联,以及...

    android+studio项目实例.pdf

    TextView textView = findViewById(R.id.textView); //假设 textView 已经在 activity_main.xml 中定义 textView.setText("Hello World!"); ``` - 如果使用的是Empty Activity模板并且没有修改默认的布局文件,...

    针对Android的Java基础学习

    在Android开发中,Java语言是核心编程语言之一,对于初学者来说,理解并掌握Java的基础知识至关重要。本节我们将深入探讨“针对Android的Java基础学习”这一主题。 首先,Java是一种面向对象的语言,它的基本结构...

    Android Studio仿微信登录、注册界面——线性布局.rar

    - 在Java代码中,我们需要为这些UI元素找到对应的引用,如`findViewById(R.id.username)`,并可能添加监听器来处理用户交互,如点击登录按钮后的验证逻辑。 - 对于登录,这可能涉及到网络请求以验证用户名和密码;...

    android获取根View的方法

    在Android开发中,根View(Root View)是布局文件中最高层次的视图容器,它包含并管理着应用界面中的所有子视图。根View通常是LinearLayout、RelativeLayout、FrameLayout等布局组件,它决定了子视图的排列方式和...

    android(经典实例)学习笔记

    Button goButton = findViewById(R.id.go); EditText inputField = findViewById(R.id.edt); goButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String user...

    android手把手开发一个图片浏览器

    1. **设计主界面**:使用XML布局文件定义界面元素,如ImageView用于显示图片。 2. **加载图片**:可以通过网络下载图片或者直接从本地资源文件加载。 3. **实现图片缩放和平移功能**:使用GestureDetector类检测用户...

    android+studio项目实例.docx

    - 指定开发语言(Java 或 Kotlin)以及最低支持的 Android 版本。 5. **配置 Activity**: - 设置第一个 Activity 的名称,如 `MainActivity`。 - 选择是否自动生成布局文件。 6. **等待项目构建完成**: - 点击...

    Android应用程序设计实践指导典型案例

    TextView textView = findViewById(R.id.text_view_hello); textView.setText("Hello World"); } } ``` **技术分析:** 1. **Activity生命周期**:了解Activity的生命周期对于管理应用状态至关重要。 2. **XML...

    android用户登录界面设计

    在实现这些组件的交互时,我们需要使用到Android的布局文件(如activity_login.xml)来定义界面元素的位置和属性,然后在对应的Activity类中处理用户的点击事件。例如,我们可以通过`setOnClickListener`方法为...

    物联网系列专业课程:Android用户界面开发.pptx

    6. **引入资源**:图片、图标等资源需要放入对应的资源目录,如drawable,刷新资源后,R.java文件会自动更新资源ID,供程序引用。 7. **加载XML资源**:在活动中,通过`setContentView()`方法加载XML布局文件,如`...

    android的一个登陆界面

    1. **res/layout/activity_main.xml**:这是布局文件,定义了用户界面的元素。对于登录界面,你需要在XML中添加`EditText`控件来接受用户名和密码,以及一个`Button`控件用于提交登录请求。例如: ```xml android:...

    Android findviewbyId代码生成器

    在Android应用开发中,`findViewById()`方法是开发者用于获取布局文件中定义的UI元素的常用方式。这个过程通常需要手动编写对应的代码,特别是在界面复杂的项目中,这可能会导致大量重复和繁琐的工作。为了提高开发...

    第一个Android程序——认识文件结构.pdf

    例如,`myTextView = (TextView)findViewById(R.id.myTextView)`和`myButton = (Button)findViewById(R.id.myButton)`分别找到了`TextView`和`Button`实例,然后我们可以对这些控件进行操作,如设置文本。...

    android知识点整理 android开发工程师必备资料文档

    3. **Assets**: 存放资源文件,但存放于此的资源不会在R.java中生成ID。 - 需要通过特定路径来引用其中的文件,适合存放原生资源文件如JSON、XML等文本格式的数据文件。 4. **Res**: 存放各种类型的资源文件,如...

    androidstudio.pdf

    TextView helloTextView = findViewById(R.id.hellotextView); helloButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { helloTextView.setText("Hello, ...

    Android中Webview与原生界面交互及二维码扫描功能实现.zip

    1. **基本使用**:首先,你需要在布局XML文件中添加一个WebView元素,并在Java代码中找到该View。然后,你可以通过`loadUrl()`方法加载指定的网页URL。 ```xml android:id="@+id/web_view" android:layout_width...

    Android项目-读取联系人结合listview.zip

    在Android开发中,读取联系人并将其显示在ListView中是一项常见的需求,这通常涉及到用户界面(UI)设计、数据获取以及数据绑定等技术。在这个"Android项目-读取联系人结合listview.zip"中,我们可以学习到如何实现...

    android调用xml

    2. **查找XML组件**:使用`findViewById()`方法找到XML布局中的特定组件,例如`TextView textView = findViewById(R.id.textView);` 3. **数据绑定**:Android Data Binding库允许直接在XML中绑定数据到UI组件,...

    Android界面切换与网络通信

    ### Android界面切换与网络通信详解 #### 一、Android界面切换方法 在Android开发中,界面切换是一项基本但非常重要的技能。它可以帮助开发者构建出更加动态且交互丰富的应用。根据提供的部分信息,我们可以将...

Global site tag (gtag.js) - Google Analytics