安卓学习笔记——Intent实现多个Activity之间的调用以及数据传递

文章目录:

一、多个Activity之间的调用

1、Intent显式调用
2、Intent隐式调用

二、使用Intent在Activity之间传递数据

1、直接使用Intent传递数据
2、使用Bundle传递数据

一、Intent在寻找目标组件时有两种方法

1、显示调用

①、采用Intent有参构造方法
关键代码:
Intent intent=new Intent(MainActivity.this,SecondActivity.class);
      startActivity(intent)
案例:
public class MainActivity extends Activity {
    private  Button  btn=null;
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        btn=(Button)findViewById(R.id.call);
        btn.setOnClickListener(listener); 
    }
   private  OnClickListener listener=new OnClickListener(){
      public void onClick(View v) {
      Intent intent=new Intent(MainActivity.this,SecondActivity.class);
      startActivity(intent);//启动 intent }  
    };    
}

public class SecondActivity extends Activity {
	  protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.second);
	  }
}
②采用Intent无参数构造方法
关键代码:
Intent intent=new Intent();
      intent.setClass(MainActivity.this,SecondActivity.class);
      startActivity(intent);
案例:
public class MainActivity extends Activity {
    private  Button  btn=null;
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        btn=(Button)findViewById(R.id.call);
        btn.setOnClickListener(listener); 
    }
   private  OnClickListener listener=new OnClickListener(){
      public void onClick(View v) {
      Intent intent=new Intent();
      intent.setClass(MainActivity.this,SecondActivity.class);
      startActivity(intent);//启动intent }  
    };    
}

public class SecondActivity extends Activity {
	      protected void onCreate(Bundle savedInstanceState) {
		      super.onCreate(savedInstanceState);
		     setContentView(R.layout.second);
     }
}

2、隐式调用

关键代码:
String urlString = editText.getText().toString();
        		Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(urlString));
                               startActivity(intent);
案例:
public class WebViewIntentDemo extends Activity {
public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);        
        final EditText editText = (EditText)findViewById(R.id.edit_url);
        final Button button = (Button)findViewById(R.id.btn);
        button.setOnClickListener(new OnClickListener(){
        	public void onClick(View view){
        		String urlString = editText.getText().toString();
        		Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(urlString));
                               startActivity(intent);
        	}
        });
    }
}

二、Intent在Activity间传递参数

1、直接使用Intent传递数据:

关键代码:
putExtras(Bundle data):向Intent中放入需要携带的数据。
putExtra(String name, int value):向Intent中放入键值对。
putExtra(String name, char value)
putExtra(String name, int[] value)
案例:
btn.setOnClickListener(new OnClickListener(){
       public void onClick(View v) {
	String  name=edit1.getText().toString();
	int pwd=Integer.valueOf(edit2.getText().toString());
	Intent intent=new Intent();
	intent.setClass(MainActivity.this, OtherActivity.class);
	intent.putExtra("name", name);
	intent.putExtra("pwd", pwd);
	startActivity(intent);
}        
        });

protected void onCreate(Bundle savedInstanceState) {
	super.onCreate(savedInstanceState);
	setContentView(R.layout.b1);
	TextView txt1=(TextView)findViewById(R.id.txt1);
	TextView txt2=(TextView)findViewById(R.id.txt2);
	Intent intent=getIntent();
	String name=intent.getStringExtra("name");
	int pwd=intent.getIntExtra("pwd", 0);
	txt1.setText(name);
	txt2.setText(""+pwd);
}

2、Intent 利用 Bundle 传参数

关键代码:

使用Bundle实现数据传递。Bundle是数据携带包,提供了多个方法存入数据。


putXxx(String key,Xxx data):向Bundle中放入各种类型数据。
putSerializable(String key,Serializable data):向Bundle中放入一个可序列化的对象。

为了取出Bundle数据携带包里的数据,Bundle提供如下方法。

getXxx(String key):从Bundle取出Int、Long等各数据类型数据。
getSerializable(String key):从Bundle取出一个可序列化的对象。
案例:
btn.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
String name=edit1.getText().toString();
int pwd=Integer.valueOf(edit2.getText().toString());
float score=Float.valueOf(edit3.getText().toString());
Bundle bundle=new Bundle();
bundle.putString("name", name);
bundle.putInt("pwd", pwd);
bundle.putFloat("score", score);
Intent intent=new Intent();
intent.setClass(MainActivity.this, OtherActivity.class);
intent.putExtras(bundle);
startActivity(intent);
}
});

Intent intent=getIntent();
Bundle bundle=intent.getExtras();
String name=bundle.getString("name");
int pwd=bundle.getInt("pwd");
float score=bundle.getFloat("score");
txt1.setText(name);
txt2.setText(""+pwd);
txt3.setText(""+score);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值