例子一:
sublayout.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#505050"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="SubLayout"
/>
<Button
android:id="@+id/mybutton"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text=" A Button "
/>
</LinearLayout>
mail.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
<include android:id="@+id/main1" layout="@layout/sublayout" />
<include android:id="@+id/main2" layout="@layout/sublayout" />
<Button
android:id="@+id/startanotheractivity"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" Start Another Activity "
/>
</LinearLayout>
如何调用组件include进来的组件呢。
package com.AndroidIncludeLayout;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class AndroidIncludeLayout extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
View subLayout1 = (View)findViewById(R.id.main1);
View subLayout2 = (View)findViewById(R.id.main2);
Button myButton_main1 = (Button)subLayout1.findViewById(R.id.mybutton);
Button myButton_main2 = (Button)subLayout2.findViewById(R.id.mybutton);
Button startAnotherActivity = (Button)findViewById(R.id.startanotheractivity);
startAnotherActivity.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Intent intent = new Intent();
intent.setClass(AndroidIncludeLayout.this, AnotherActivity.class);
startActivity(intent);
}});
myButton_main1.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Toast.makeText(AndroidIncludeLayout.this, "Button 1 Pressed", Toast.LENGTH_LONG).show();
}});
myButton_main2.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Toast.makeText(AndroidIncludeLayout.this, "Button 2 Pressed", Toast.LENGTH_LONG).show();
}});
}
}
但是如果include进来的xml,是
sublayout.xml
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="SubLayout"
/>
<Button
android:id="@+id/mybutton"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text=" A Button "
/>
</merge>
则以上的方法将不能实现,会报空指针。
因为用了merge后,导入进来就相当于是当前view下的组件了,所以直接
findViewById就可以了。
这样的话。。。可以解决了include 多次同一个layout的问题
分享到:
相关推荐
2. 调用父视图的`findViewByID()`方法,传入`<include>`标签中给子组件指定的ID,这样就可以访问到`<include>`内部的具体组件。 这个过程展示了如何在Java代码中与`<include>`标签内的组件进行交互,这对于创建动态...
这个“Androidstudio调用jni的示例”是一个基础教程,旨在帮助初学者理解如何在Android Studio项目中使用JNI来调用本地C/C++代码。下面将详细介绍这个示例中的关键步骤和涉及的知识点。 1. **创建JNI接口** 在Java...
在Android开发中,JNI(Java Native Interface)是一个关键的组件,允许Java代码和其他语言写的代码进行交互。JNI在很多场景下都有应用,如性能优化、使用C/C++库或者访问硬件特性等。本教程将通过一个简单的实例,...
在include/asm/unistd.h中不同的体系结构为每一个系统调用定义了惟一的编号。 系统调用流程的第一步是将系统调用号与系统调用响应函数相关联。以系统调用号__NR_name作为下标,可以找出系统调用表sys_call_table中...
在Android开发中,JNI(Java Native Interface)是一个关键的组件,它允许Java代码与其他语言编写的代码进行交互,包括C++。JNI对于实现性能敏感的部分、利用硬件加速、调用系统库或者集成第三方C/C++库等场景非常...
在Android开发中,JNI(Java Native Interface)是一个关键的组件,它允许Java代码与其他语言编写的代码进行交互,包括C、C++等。本篇将深入探讨如何在Android应用程序中两次调用JNI,并且调用不同的本地方法。 ...
在Android开发中,JNI(Java Native Interface)是一个关键的组件,它允许Java代码与其他语言编写的代码进行交互,特别是C和C++。本教程将深入探讨如何在Android应用中使用JNI进行跨语言通信,以实现特定功能或提高...
在Android开发中,JNI(Java Native Interface)是一个关键的组件,允许Java或Kotlin代码与本地C/C++代码进行交互。这种交互对于优化性能、利用硬件特性或集成第三方库至关重要。本篇将深入探讨JNI的使用,以及如何...
这个示例“Android use JNI CALL include .h method sample”是关于如何在Android项目中使用JNI调用包含.h头文件的方法。下面将详细解释这个过程。 首先,我们需要了解JNI的基本概念。JNI是Java平台提供的一种接口...
【标题】: "在 Uniapp 中调用 Java 代码:使用 Android Studio 打包 AAR 文件教程" 【描述】: "本教程详细介绍了如何在 Uniapp 中调用 Java 代码,通过 Android Studio 将 Java 代码打包成 AAR 文件,以便在 Uniapp...
- 在C++中,使用`#include <jni.h>`和`#include "YourJavaInterface.h"`来访问这些接口。 6. **编译和链接** - 配置CMakeLists.txt文件,确保所有库和源文件被正确地编译和链接。 - 在Android Studio的build....
在Android开发中,JNI(Java Native Interface)是一个关键的组件,允许Java代码与本地(C/C++)代码交互。JNI在各种场景下都非常有用,比如性能优化、利用现有的C库或者实现特定硬件功能等。本Demo是关于如何在...
Context对象通常是我们当前的Activity或Application,它是Android系统中所有组件的基础,包含了运行环境的信息。而fileFullPath参数则指定了截图保存的位置和文件名。 在调用`takeScreenshot()`之前,你需要确保你...
在Android开发中,JNI(Java Native Interface)是一个关键的组件,它允许Java代码与其他语言写的代码进行交互。JNI在很多场景下都非常有用,比如优化性能、调用操作系统API或者利用硬件特性,本示例中我们将关注...
标签"android"表明这是与Android平台相关的技术,"ViewStub"是本文的核心话题,而"include"则可能暗示了ViewStub可以与<include>标签配合使用,实现布局的复用和组合。在Android布局中,<include>标签可以将一个布局...
- **使用LayoutInflater**:Android提供了LayoutInflater服务,可以将XML布局文件中的视图转换为运行时的对象。首先,我们需要通过`getSystemService()`方法获取LayoutInflater实例,然后调用`inflate()`方法加载...
arm-linux-androideabi-4.9.7z正是这样一个关键的工具链,它为开发者提供了在Windows上构建适用于ARM架构(Android设备普遍使用的处理器架构)的Linux应用程序的能力。 一、交叉编译基础 交叉编译是指在一个平台上...
在本文中,我们将深入探讨如何在Visual Studio 2019环境下使用C++通过Java Native Interface (JNI)来调用Java代码。JNI是Java平台的一部分,它为Java应用程序提供了与本地代码交互的能力,使得开发者可以将Java应用...
标题中的"libmp3lame.so、include for Android armv7a、arm64"揭示了这个压缩包是关于MP3编码器库的,适用于Android操作系统,并且包含了针对两种不同的处理器架构,即armv7a(armeabi-v7a)和arm64(armeabi-v8a)...