六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 45|回复: 0

学习Activity

[复制链接]

升级  55.33%

35

主题

35

主题

35

主题

秀才

Rank: 2

积分
133
 楼主| 发表于 2013-1-15 02:26:23 | 显示全部楼层 |阅读模式
今天继续看了Android的教程,学会了下边一些东西。

  • 使用XML 布局创建一个简单的应用程序
  • 用基于Java 的布局来创建
  • 运行Android 应用程序
  • 使用Logcat 来调试
  • 使用Intent 来开启(子)Activity
  • 找到在XML 中定义的View、在Java 代码中使用它们
  • 为View 处理点击事件
  • 从SubActivity 返回值
  • 使用Bundle 传递数据给SubActivity


Activity 状态
① 当一个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>
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表