学习Activity

今天继续看了Android的教程,学会了下边一些东西。
[list]
[*]使用XML 布局创建一个简单的应用程序
[*]用基于Java 的布局来创建
[*]运行Android 应用程序
[*]使用Logcat 来调试
[*]使用Intent 来开启(子)Activity
[*]找到在XML 中定义的View、在Java 代码中使用它们
[*]为View 处理点击事件
[*]从SubActivity 返回值
[*]使用Bundle 传递数据给SubActivity
[/list]

[b]Activity 状态[/b]
① 当一个Activity 在屏幕的最上层时(对堆栈的最顶端),它就是属于active 或者running 的状态
② 如果一个Activity 失去焦点(focus)但还看得到它的画面(比如:一个新的Activity 画面并不是全屏幕或者它是一个半透明的情况),那失去焦点的Activity 则处在paused 的状态。像这个失去焦点的Activity它还是完全活着的,并没有消失。(活着的意思是指,Activity 自己本身所有的状态及数据都还是存在的,也跟窗口管理程序window manager 保持联系着),像这种paused 的Activity,会在一种情况下消失,那就是当系统的内存不够用之时,系统会自动判断,八部重要的Activity 移除。
③ 如果一个Activity 被其它的Activity 完全的遮盖住时,它仍然保有全部的状态及数据,但因为它已不再被使用者看见,所以它的画面是被隐藏起来的(画面不需要更新),当系统内存不足时,这种stop 状态的Activity 时最先被系统考虑拿下来释放内存的。
④ 当一个Activity 处于pause 或stop 的状态时,系统可以要求Activity 结束(finish)或直接移除(kill)它。当它需要再度呈现在使用者面前时,它必须要能完整的重新启动及回复先前的状态。

跟着教程实现了一个小程序,可以打开一个子Activity (屏幕),输入我们想查找的字符串。提交后使用Google 进行搜索,并把主Activity 的Title 改为该字符串。
src/peng/test/StartingSubactivities.java 主Activity 类代码
package peng.test;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class StartingSubactivities extends Activity
implements OnClickListener {
private Button open;
private Intent toIntent;
private static final int MYSECONDACTIVITY_REQUESTCODE = 1;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
open = (Button)this.findViewById(R.id.btn_open_search);
open.setOnClickListener(this);
}
@Override
public void onClick(View v) {
toIntent = new Intent();
toIntent.setClass(StartingSubactivities.this, MySecondActivity.class);
startActivityForResult(toIntent, MYSECONDACTIVITY_REQUESTCODE);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Log.d("DEBUGTAG", "RequestCode = " + requestCode);
switch (requestCode) {
case MYSECONDACTIVITY_REQUESTCODE:
Log.d("DEBUGTAG", "ResultCode = " + resultCode);
if (resultCode == RESULT_CANCELED) {
setTitle("Result Canceled");
} else {
String getStringFrom = data.getStringExtra("GET_TEXT");
setTitle(getStringFrom);
Intent webIntent = new Intent(Intent.ACTION_VIEW,
Uri.parse("http://www.google.com/search?q=" + getStringFrom));
startActivity(webIntent);
}
break;
}
}
}

res/layout/main.xml 主Activity 的Layout
<?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"
/>
<Button
android:id="@+id/btn_open_search"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Open Search-Dialog"
/>
</LinearLayout>

src/peng/test/MySecondActivity.java 子Activity 类代码
package peng.test;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class MySecondActivity extends Activity
implements OnClickListener {
private EditText getText;
private Button back;
private String getString;
private Intent backIntent;
private Bundle backBundle;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second);
getText = (EditText)findViewById(R.id.et_keyword);
back = (Button)findViewById(R.id.btn_return);
back.setOnClickListener(this);
}
@Override
public void onClick(View v) {
if (v.getId() == R.id.btn_return) {
getString = getText.getText().toString();
backIntent = new Intent();
backBundle = new Bundle();
backBundle.putString("GET_TEXT", getString);
backIntent.putExtras(backBundle);
setResult(RESULT_OK, backIntent);
Log.d("DEBUGTAG", "Input String = " + getString);
finish();
}
}
}

res/layout/second.xml 子Activity 的Layout
<?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"
>
<EditText
android:id="@+id/et_keyword"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<Button
android:id="@+id/btn_return"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Submit"
/>
</LinearLayout>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值