学习2
、关于Activity
一个Activity要与一个Layout对应。Acitivity里面包含界面逻辑,而Layout包含界面元素的位置。
建立DemoAcitivity的过程如下:
1. 在res/layout/下创建一个Layout,命名为demo_layout.xml,使用任何一种合适的布局,将界面元素按照需要布置在界面中。
2. 创建DemoActivity的代码,继承自Activity类。重写onCreate方法,在onCreate方法中调用
setContentView(R.layout.demo_layout);
这样,DemoActivity启动的时候,会查找并使用demo_layout来作为其显示的界面。
在多个界面中切换
为了在多个界面中切换程序,可以使用两种方法:
1. 使用Intent切换不同的Activity;
2. 使用setContentView切换不同的Layout;
二者各有好处。其中,
使用Intent切换Activity,各界面的逻辑包含在不同的类代码中,结构清晰。其缺点是Activity切换动作较大,消耗较多。同时,如果需要在不同的窗口之间传递数据,需要使用Intent来完成。
使用setContentView切换Layout,所有的逻辑以及数据均保存在同一个Activity类中,不需要进行数据传递。缺点是不同窗口的逻辑代码可能会混杂在一起。
切换方法1 : 使用Intent切换Activity
首先在layout里建2个xml文件,分别对应两个不同的Activity的界面。每个界面上均有一个按钮,通过点击切换到另一个Activity。
public class Activity01 extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
/* 设置显示layout01.xml布局 */
setContentView(R.layout.layout01);
/* findViewById(R.id.button1)取得布局layout01.xml中的button1 */
Button button = (Button) findViewById(R.id.button1);
/* 监听button的事件信息 */
button.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
/* 新建一个Intent对象,并指定要启动的类 */
Intent intent = new Intent(Activity01.this, Activity02.class);
/* 启动一个新的Activity */
startActivity(intent);
/* 关闭当前的Activity */
Activity01.this.finish();
}
});
}
}
另一个类的实现代码与此类似,只是把Activity01与Activity02相互交换。
需要注意的是,这两个Activity都必须在AndroidManifest.xml文件中声明,并指定一个默认的启动类。典型的声明如下:
...
<application>
<activity android:name=".Activity01">
<intent-filter>
<action android:name="android.intent.aciton.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".Activity02"></activity>
</application>
...
如果要传递数据,可以使用Intent的putExtra来添加信息,然后再启动目标Activity。例如,要传递一个名字为“greeting”的字符串“How do you do”,使用方法是:
intent.putExtra("greeting","How do you do");
而在被启动的Activity中,使用Intent的getExtra来得到消息,如:
Intent intent = getIntent();
String msg = intent.getStringExtra("greeting");
传递其它的信息类似,只是get的时候需要知道信息的类型,如getBooleanExtra等等。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义