Activity几种数据传递的方法

1 传递数据 Application(与Web中的全局变量一样) 

  步骤:1)定义一个类实现Application 2)主的xml中application的属性中添加name="类的路径"

        3)  Activity中调用 调用 ,定义的类的实例 = (类) getApplication();并且改变里面的数值

4)在任何其他地方调用这个方法取出数据

2  剪切板来传递数据 

    1)得到剪切板对象 2)在另一个Activity中得到数据

    ClipboardManager cbManager= (ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE );

    cbManager.setText("牛魔王,签收观音");

    2)在另一个Activity中得到数据

String name =cbManager.getText().toString();

    Toast.makeText(HtmlActivity.this ,"测试App+=="+ name, Toast.LENGTH_SHORT).show();

3 Intent 来传递数据 (推荐,但是不能传递不能序列化的数据 )

Intent intent = new Intent(this, GradViewActivity.class);

        String message =  "按钮过 ";

        intent.putExtra(EXTRA_MESSAGE, message);

4 静态变量 (类的静态变量数据可以共享特性)

  将数据保存在静态变量中,然后启动另一个Activity后在另一个Activity中取出数据 

5 Activity 调用Activity后回传数据 (数据回传)

 1)主的Activity中调用以下方法启动Activity2,并重写onActivityResult

	Intent intent = new Intent(this, PassDataMainActivity2.class);
	startActivityForResult(intent , REQUESTCODE);


	 @Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		super.onActivityResult(requestCode, resultCode, data);
		Log.e("onActivityResult==", "====onActivityResult==") ;
		if(resultCode==2 ){
			if(resultCode==REQUESTCODE){
				Bundle b = data.getExtras();
				String r = b.getInt("result")+"";
				
				result.setText( r);		
			}
		}
	}

 2)将计算好的数据放到Intent中调用setResult返回数据,调用finish结束Activity

  

	Intent intent2 = new Intent();
	int three = Integer.parseInt(edit.getText().toString());
	intent2.putExtra("result",  three);
	setResult( 2,intent2 ); //回传intnet 
	finish(); //结束当前activity生命周期 

猜你喜欢

转载自username2.iteye.com/blog/2187898
今日推荐