Activity学习笔记

     Activity是UI组件。一个应用通常包含多个Actvity,每个Activity都提供一个窗口用于与用户交互。每个应用会有一个作为“主”Activity的Activity,该Activity会在启动应用时显示,通过它可以启动其他Activity当新的Activity启动时,前一个Activity会停止,并且新的Activity会被压入到“Back”栈中,获得用户焦点。"Back"栈保持了“后进新出”的特性,当用户按Back键时,当前的这个Activity出栈,前一个Activity重新恢复。

    在Activity的生命周期中会有6个回调方法:onCreate()、onStart()、onResume()、onPause()、onStop()、onDestroy()。

创建Activity

    创建必须自己的Activity必须继承Activity,并且覆盖Activity的生命周期方法。其中最重要的两个重要方法是:onCreate()、onPause()。

onCreate():

系统在创建Activity时回调该方法。必须覆盖该方法,在该方法中应该用于初始化必要的组件,调用setContentView()定义用户界面。

onPause():

用户离开当前Activity时,系统调用该方法。在该方法中应该用于保存数据修改。

下面举个例子:

package org.wh.hello;

import android.app.Activity;
import android.os.Bundle;
import android.widget.Toast;

public class HelloWorldActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        Toast.makeText(this, R.string.hello, Toast.LENGTH_LONG).show();
    }

	@Override
	protected void onPause() {
		// TODO Auto-generated method stub
		super.onPause();
	}
	
}

编写完Activity后,需要在AndroidManifest.xml中进行配置:

        <activity
            android:label="@string/app_name"
            android:name=".HelloWorldActivity" >
            <intent-filter >
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

<action>元素指定该Activity是应用程序的“主”入口。<category>元素指定该Activity会在系统的应用启动器中显示。

启动Activity

    可以通过startActivity()启动另一个Activity:

  public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        Button btn = (Button)findViewById(R.id.start);
        btn.setOnClickListener(new View.OnClickListener() {
			public void onClick(View v) {
				Intent intent = new Intent(getApplicationContext(), AnotherActivity.class);
				startActivity(intent);
			}
		});
    }

启动带返回值的Activity:

public class StartActivityForResultActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        Button btn = (Button)findViewById(R.id.start);
        btn.setOnClickListener(new View.OnClickListener() {
			public void onClick(View v) {
				Intent intent = new Intent(getApplicationContext(), AnotherActivity.class);
				intent.putExtra("name", "Hello AnotherActivity!");
				startActivityForResult(intent, 100);
			}
		});
    }

	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		// TODO Auto-generated method stub
		super.onActivityResult(requestCode, resultCode, data);
		
		if (resultCode == 200) {
			String result = data.getStringExtra("name");
			Toast.makeText(this, result, Toast.LENGTH_LONG).show();
		}
	}
    
}

在另一个Activity中:

public class AnotherActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.another);
		
		Intent intent = getIntent();
		String name = intent.getStringExtra("name");
		Toast.makeText(this, name, Toast.LENGTH_LONG).show();
		
		Button btn = (Button)findViewById(R.id.returnResult);
		btn.setOnClickListener(new View.OnClickListener() {
			
			@Override
			public void onClick(View v) {
				Intent result = new Intent();
				result.putExtra("name", "Hello StartActivity!");
				setResult(200, result);
				finish();
			}
		});
	}
	
}

关闭Activity

调用finish()和finishActivity()。通常不应该显示的通过这两个方法关闭Activity,应该交由系统统一管理生命周期。


转载于:https://my.oschina.net/lovesesun/blog/266385

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值