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

  • 相关阅读:
    typescript中的类型兼容性
    typescript中使用泛型
    分数的乘法逆元和负数的取模运算
    pip2 install protobuf==2.6.1
    git使用代理
    Mount error(5):Input/output error on mount
    cmake 学习笔记(一)
    cmake --help
    ImportError: dynamic module does not define init function (initcaffe)
    docker
  • 原文地址:https://www.cnblogs.com/stareblankly/p/5054288.html
Copyright © 2011-2022 走看看