[android] activity基础

//MainActivity
package cn.eoe.helloeoe;

import android.support.v7.app.ActionBarActivity;
import android.R.string;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;


public class MainActivity extends ActionBarActivity {

    private Button btnStartAty1;
    private TextView tvOut;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        btnStartAty1 = (Button) findViewById(R.id.btnStartAty1);
        tvOut = (TextView) findViewById(R.id.tvOut);
        
        btnStartAty1.setOnClickListener(new View.OnClickListener() {
            
            @Override
            public void onClick(View v) {
                Intent i = new Intent(MainActivity.this, Aty1.class);
                i.putExtra("text", "get from main");
//                startActivity(i);
                
                startActivityForResult(i, 0);
            }
        });
        
        
        
        System.out.println("onCreate!!");
    }
    
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        
        String result = data.getStringExtra("result");
        tvOut.setText(result);
        super.onActivityResult(requestCode, resultCode, data);
    }

    @Override
    protected void onStart() {
        System.out.println("onStart");
        super.onStart();
    }
    
    @Override
    protected void onResume() {
        System.out.println("onResume");
        super.onResume();
    }
    
    @Override
    protected void onPause() {
        System.out.println("onPause");
        super.onPause();
    }
    
    @Override
    protected void onStop() {
        System.out.println("onStop");
        super.onStop();
    }
    
    @Override
    protected void onDestroy() {
        System.out.println("onDestroy");
        super.onDestroy();
    }
    
    @Override
    protected void onRestart() {
        System.out.println("onRestart");
        super.onRestart();
    }
    
}

 

//son activity
public class Aty1 extends Activity {
    
    private Button btnClose;
    private TextView tvOut;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.aty1);
        
        btnClose = (Button) findViewById(R.id.btnClose);
        btnClose.setOnClickListener(new View.OnClickListener() {
            
            @Override
            public void onClick(View v) {
                Intent result = new Intent();
                result.putExtra("result", "from Aty1");
                setResult(0,result);
                finish();
            }
        });
        
        tvOut = (TextView) findViewById(R.id.tvOut);
        String fromMain = getIntent().getStringExtra("text");
        tvOut.setText(fromMain);
    }
}

 

activity声明周期以及自动调用的函数

 

(1)第一次启动会调用oncreate onstart onresume

(2)被其他activity挡住当前activity会调用onpause

(3)如果activity在onpause后系统需要更多内存,则会杀死activity,并调用onstop;

 

1、试用了插件后,可在对应的资源文件xml中修改其id号,并使用findViewById()找到插件;

2、监听按钮

btnStartAty1.setOnClickListener(new View.OnClickListener() {
            
            @Override
            public void onClick(View v) {
                Intent i = new Intent(MainActivity.this, Aty1.class);
                i.putExtra("text", "get from main");
//                startActivity(i);
                startActivityForResult(i, 0);
            }
        });

setOnClickListener()要求传入一个OnClickListener的实例,于是直接编写匿名函数,并重写onclick函数;

函数中使用一个intent装载了一个父acitivity和一个子activity的class,并使用startActivity()可打开一个新的activity;

如果使用startActivityForResult()打开一个activity,则可以监听其返回值,用于两个activity之间的数据互通;

 

3、子activity返回结果

使用setResult()与父activity交换数据,父activity重写

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        
        String result = data.getStringExtra("result");
        tvOut.setText(result);
        super.onActivityResult(requestCode, resultCode, data);
    }

接受setresutl的结果,data就是setresult传回来的intent;

 

4、使用finish()关闭一个activity;

posted @ 2014-10-12 19:27  iyjhabc  阅读(341)  评论(0编辑  收藏  举报