学习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等等。

posted @   神行乌龟  阅读(65)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
点击右上角即可分享
微信分享提示