写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文件关联 在移动应用开发中,尤其是在Android平台上,用户界面(UI)的设计和交互是至关重要的。本实验旨在帮助学生掌握Android UI布局文件与Java代码之间的关联,以及...
TextView textView = findViewById(R.id.textView); //假设 textView 已经在 activity_main.xml 中定义 textView.setText("Hello World!"); ``` - 如果使用的是Empty Activity模板并且没有修改默认的布局文件,...
在Android开发中,Java语言是核心编程语言之一,对于初学者来说,理解并掌握Java的基础知识至关重要。本节我们将深入探讨“针对Android的Java基础学习”这一主题。 首先,Java是一种面向对象的语言,它的基本结构...
- 在Java代码中,我们需要为这些UI元素找到对应的引用,如`findViewById(R.id.username)`,并可能添加监听器来处理用户交互,如点击登录按钮后的验证逻辑。 - 对于登录,这可能涉及到网络请求以验证用户名和密码;...
在Android开发中,根View(Root View)是布局文件中最高层次的视图容器,它包含并管理着应用界面中的所有子视图。根View通常是LinearLayout、RelativeLayout、FrameLayout等布局组件,它决定了子视图的排列方式和...
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...
1. **设计主界面**:使用XML布局文件定义界面元素,如ImageView用于显示图片。 2. **加载图片**:可以通过网络下载图片或者直接从本地资源文件加载。 3. **实现图片缩放和平移功能**:使用GestureDetector类检测用户...
- 指定开发语言(Java 或 Kotlin)以及最低支持的 Android 版本。 5. **配置 Activity**: - 设置第一个 Activity 的名称,如 `MainActivity`。 - 选择是否自动生成布局文件。 6. **等待项目构建完成**: - 点击...
在实现这些组件的交互时,我们需要使用到Android的布局文件(如activity_login.xml)来定义界面元素的位置和属性,然后在对应的Activity类中处理用户的点击事件。例如,我们可以通过`setOnClickListener`方法为...
6. **引入资源**:图片、图标等资源需要放入对应的资源目录,如drawable,刷新资源后,R.java文件会自动更新资源ID,供程序引用。 7. **加载XML资源**:在活动中,通过`setContentView()`方法加载XML布局文件,如`...
1. **res/layout/activity_main.xml**:这是布局文件,定义了用户界面的元素。对于登录界面,你需要在XML中添加`EditText`控件来接受用户名和密码,以及一个`Button`控件用于提交登录请求。例如: ```xml android:...
在Android应用开发中,`findViewById()`方法是开发者用于获取布局文件中定义的UI元素的常用方式。这个过程通常需要手动编写对应的代码,特别是在界面复杂的项目中,这可能会导致大量重复和繁琐的工作。为了提高开发...
例如,`myTextView = (TextView)findViewById(R.id.myTextView)`和`myButton = (Button)findViewById(R.id.myButton)`分别找到了`TextView`和`Button`实例,然后我们可以对这些控件进行操作,如设置文本。...
3. **Assets**: 存放资源文件,但存放于此的资源不会在R.java中生成ID。 - 需要通过特定路径来引用其中的文件,适合存放原生资源文件如JSON、XML等文本格式的数据文件。 4. **Res**: 存放各种类型的资源文件,如...
TextView helloTextView = findViewById(R.id.hellotextView); helloButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { helloTextView.setText("Hello, ...
1. **基本使用**:首先,你需要在布局XML文件中添加一个WebView元素,并在Java代码中找到该View。然后,你可以通过`loadUrl()`方法加载指定的网页URL。 ```xml android:id="@+id/web_view" android:layout_width...
在Android开发中,读取联系人并将其显示在ListView中是一项常见的需求,这通常涉及到用户界面(UI)设计、数据获取以及数据绑定等技术。在这个"Android项目-读取联系人结合listview.zip"中,我们可以学习到如何实现...
2. **查找XML组件**:使用`findViewById()`方法找到XML布局中的特定组件,例如`TextView textView = findViewById(R.id.textView);` 3. **数据绑定**:Android Data Binding库允许直接在XML中绑定数据到UI组件,...
### Android界面切换与网络通信详解 #### 一、Android界面切换方法 在Android开发中,界面切换是一项基本但非常重要的技能。它可以帮助开发者构建出更加动态且交互丰富的应用。根据提供的部分信息,我们可以将...
TabLayout tabLayout = findViewById(R.id.tab_layout); ViewPager viewPager = findViewById(R.id.view_pager); ``` 4. **设置Adapter** 创建一个继承自`PagerAdapter`的自定义Adapter,并重写`getPageTitle()...