zoukankan      html  css  js  c++  java
  • Android Intent传递数据

    刚开始看郭大神的<<第一行代码>>,实现以下里面的一些例子.Intent传递数据.
    我们利用显示的方式进行Intent的启动.

    1.启动intent并输入数据.

    Intent intent=new Intent(MainActivity.this,TwoActivity.class
    					);
    			intent.putExtra("data", "hello two");
    			startActivity(intent);
    

    2.接收数据.

    Intent intent=getIntent();
    		Log.i("data", intent.getStringExtra("data"));
    

    注.intent传递数据的方式是键值对的形式,所以我们要根据预键来取.这里我们传递的是一个String字符串,当然你也可以传递其他数据类型.不过取的时候我们要根据数据类型来使用不同方法取.如下(当然还有很多,以此类推).

    		intent.getIntExtra(name, defaultValue);
    		intent.getBooleanExtra(name, defaultValue);
    

    3.返回数据

    Intent intent1=new Intent(MainActivity.this,TwoActivity.class
    					);
    			
    			intent1.putExtra("data", "hello two");
    			startActivityForResult(intent1, 1);
    

    在这里我们使用的不是startActivity();而是startActivityForResult();,这是我们要返回数据,所以必须要一个用来识别返回数据的code.

    Intent intent=getIntent();
    		data=intent.getStringExtra("data");
    		Log.i("data", data);
    		findViewById(R.id.btn_twolayout).setOnClickListener(new OnClickListener(
    				) {
    			
    			@Override
    			public void onClick(View v) {
    				Intent intent=new Intent();
    				intent.putExtra("data1", data+"收到.");
    				setResult(RESULT_OK, intent);
    				finish();
    			}
    		});
    

    接收并返回数据.setResult(RESULT_OK, intent);.然后我们使用finish();将当前的activity销毁掉,返回上一个activity.

    @Override
    	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    		if (requestCode==1) {
    			if (resultCode == RESULT_OK) {
    				Log.i("data1", data.getStringExtra("data1"));
    			}
    		}
    		super.onActivityResult(requestCode, resultCode, data);
    	}
    

    最后我们重写onActivityResult();方法,并判断requestCode是否等于我们预先设定好的code,和resultCode是否等于RESULT_OK.


    在onActivityResult();方法里带有三个参数,分别是requestCode,我们在启动活动时传入的请求码.resultCode,我们在返回数据时候传入的处理结果.data,携带着返回数据的intent.

    此外我们还有一个问题,如果我们不是通过预先设定好的按钮返回上一个activity,而是通过back按键返回怎么办?

    @Override
    	public void onBackPressed() {
    		Intent intent=new Intent();
    		intent.putExtra("data1", data+"收到.");
    		setResult(RESULT_OK, intent);
    		finish();
    	}
    

    这个时候我们可以通过重写onBackPressed(); 方法来解决.这样的话当我们按下back按键,就会去执行onBackPressed();方法中的代码.
    么么哒的效果图 o.o

  • 相关阅读:
    A1052. Linked List Sorting (25)
    A1032. Sharing (25)
    A1022. Digital Library (30)
    A1071. Speech Patterns (25)
    A1054. The Dominant Color (20)
    A1060. Are They Equal (25)
    A1063. Set Similarity (25)
    电子码表
    矩阵键盘
    对象追踪、临时对象追踪、绝对坐标与相对坐标
  • 原文地址:https://www.cnblogs.com/stareblankly/p/5054288.html
Copyright © 2011-2022 走看看