【原创】Android多个xml文件的使用

Android中经常会使用多个xml文件,但在Mainactivity中使用的setContentView(R.layout.main)只加载main.xml文件,其他xml文件不加载进当前视图,当我们要用到其他xml文件中的控件是发现直接使用findViewById()方法时不报错但控件的值找不到为null,而一旦为该控件添加相应事件就会出现空指针异常。原因就在于控件并未加载进当前视图。

解决方法:两种

1、使用在main.xml中使用include语句

<include layout="@layout/x"/>

2、使用LayoutInflater 举个简单;例子

两个xml文件main.xml和x.xml

main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/tv"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/hello" />
</LinearLayout>

x.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

   <Button
       android:id="@+id/bt"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"

       android:layout_below="@id/tv"
       />

</RelativeLayout>

activity中的代码:



 1 package leemo.e;
 2
 3
 4 import android.app.Activity;
 5 import android.os.Bundle;
 6 import android.view.LayoutInflater;
 7 import android.view.View;
 8 import android.view.View.OnClickListener;
 9 import android.widget.Button;
10 import android.widget.LinearLayout;
11 import android.widget.TextView;
12 import android.widget.Toast;
13
14 public class EeeActivity extends Activity {
15     /** Called when the activity is first created. */
16     @Override
17     public void onCreate(Bundle savedInstanceState) {
18         super.onCreate(savedInstanceState);
19         setContentView(R.layout.main);
20         TextView tv = (TextView) findViewById(R.id.tv);
21         tv.setText("content is change");
22
23
24         LayoutInflater layout=this.getLayoutInflater();
25         View view=layout.inflate(R.layout.x,null);
26         LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
27                 LinearLayout.LayoutParams.FILL_PARENT,
28                 LinearLayout.LayoutParams.WRAP_CONTENT);
29                 addContentView(view,params);
30         Button bt = (Button) view.findViewById(R.id.bt);
31         bt.setText("µã»÷ÎÒ ");
32         bt.setOnClickListener(new OnClickListener() {
33
34             @Override
35             public void onClick(View v) {
36                 // TODO Auto-generated method stub
37                 Toast.makeText(EeeActivity.this, "button click",
38                         Toast.LENGTH_SHORT).show();
39             }
40         });
41
42     }
43
44 }

 
这样也能达到同样的效果 ,不过发现个问题,控件的位置不好控制,留待以后吧。。。。
时间: 04-15

【原创】Android多个xml文件的使用的相关文章

Android shape的xml文件

Android shape的xml文件可以写不同形状.背景.边框.圆角等等效果,可以代替不少. 9图片的使用,缩小资源文件的大小.下面看一下shape可以包含的内容有哪些. 1 <?xml version="1.0" encoding="utf-8"?> 2 <shape 3 xmlns:android="http://schemas.android.com/apk/res/android" 4 android:shape=[&

android XMLPullParser读取xml文件

由于刚学Android,用的开发工具是Android studio,没用过eclipse的那个开发Android,所以针对有些说由于2个IDE的路径不通导致的文件读取不到,不做分析(实际上是没法分析eclipse里的),这个博文只针对AS用户. 我们的资源文件,除了放到res目录下之外,还可以放在跟java .res同级的asserts(新建的)目录里. 今天要解析的这个xml就是在这个目录下的. 首先说一下xmlpullparser,这个pull解析是基于事件的模式.比如 读取到xml的开始声

【转】android中string.xml文件的使用

1.在程序中获取string.xml中字符串和数值 <?xml version="1.0" encoding="utf-8"?><resources>    <string name="hello">Hello World, MainActivity!</string>    <string name="app_name">TestExample01</stri

android的布局xml文件如何添加注释?

xml布局文件如图添加注释后报错,错误内容如下: 上网查阅xml添加注释的语法规则: XML 中的注释 在 XML 中编写注释的语法与 HTML 的语法很相似: <!--This is a comment--> 并不是注释本身的问题. 因此可能是Android中的xml有特殊的规定,继续搜索发现有网友说: Android中的xml只能在组件布局代码后,或者在组件的前面添加注释.如下所示:<RelativeLayout        android:id="@+id/item_l

Android开发 使用XML文件设置背景变化

1 <?xml version="1.0" encoding="utf-8"?> 2 <selector xmlns:android="http://schemas.android.com/apk/res/android" > 3 <item android:drawable="@drawable/ic_menu_search_holo_light" android:state_focused=&

[转]Android中attrs.xml文件的使用详解

转自:http://blog.csdn.net/jiangwei0910410003/article/details/17006087 Android中在values中定义一个attrs.xml,然后自己定义一个组件MyView attrs.xml内容如下: [html] view plaincopy <?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleabl

第三十九讲:Android之AndroidManifest.xml文件中注册权限

积土而为山,积水而为海.--<荀子·儒效> 本讲内容:android权限详细 1 访问登记属性 android.permission.ACCESS_CHECKIN_PROPERTIES ,读取或写入登记check-in数据库属性表的权限 2 获取错略位置 android.permission.ACCESS_COARSE_LOCATION,通过WiFi或移动基站的方式获取用户错略的经纬度信息,定位精度大概误差在30~1500米 3 获取精确位置 android.permission.ACCESS

Android有感(9):10.使用XML文件和Java代码控制UI界面

Android推荐使用XML文件设置UI界面,然后用Java代码控制逻辑部分,这体现了MVC思想. MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑.数据.界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑. 我们可以在app\src\main\res\layout目录下定义一个XML文件(R.java文件会自

TextView在xml文件中加入onClick属性后,clickable值依旧是false的原因。

先看View中是如何定义clickable和onClick的: case com.android.internal.R.styleable.View_clickable: if (a.getBoolean(attr, false)) { viewFlagValues |= CLICKABLE; viewFlagMasks |= CLICKABLE; } break; 上面这段代码是View源码中对clickable属性的定义,缺省值为false. case R.styleable.View_on