第一个类是点击传值
public class MainActivity extends Activity {
private Button btn=null
public void onCreate(Bundle savedInstanceState)//onCreate方法用来初始化Activity实例对象
{
super.onCreate(savedInstanceState)//super.onCreate(savedInstanceState)的作用是调用其父类Activity的onCreate方法来实现对界面的图画绘制工作
setContentView(R.layout.activity_main)//setContentView(R.layout.main)的作用是加载一个界面
btn=(Button)findViewById(R.id.btn)
btn.setOnClickListener(listener)
}
private View.OnClickListener listener=new View.OnClickListener()
{
@Override
public void onClick(View v)
{
// Intent intent=new Intent()
// intent.setAction(Intent.ACTION_SENDTO)
// intent.setData(Uri.parse("smsto:5554"))
// intent.putExtra("sms_body", "Hello!")//sms_body不能随意换成
// startActivity(intent)
Intent intent=new Intent()
intent.setClass(MainActivity.this, SecondActivity.class)//从一个activity跳转到另一个activity
intent.putExtra("str", "Intent Demo")//给intent添加额外数据,key为“str”,key值为"Intent Demo"
startActivity(intent)
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu)
return true
}
}
第二个获取传过来的值展示
public class SecondActivity extends Activity
{
private TextView secondTxt
@Override
protected void onCreate(Bundle savedInstanceState)
{
// TODO Auto-generated method stub
super.onCreate(savedInstanceState)
setContentView(R.layout.second)
Intent intent=getIntent()//getIntent将该项目中包含的原始intent检索出来,将检索出来的intent赋值给一个Intent类型的变量intent
Bundle bundle=intent.getExtras()//.getExtras()得到intent所附带的额外数据
String str=bundle.getString("str")//getString()返回指定key的值
secondTxt=(TextView)findViewById(R.id.secondTxt)//用TextView显示值
secondTxt.setText(str)
}
}
布局文件就一个按钮一个TextView
问题: Intent.setClass(Context packageContext, Class cls),中 第一个参数是那个Context。 (调用方,被调用方?) 假设结构如下 包:com.package依----》Activity依,Activity贰 包:com.package贰----》ActivityA,ActivityB 误解: 认为Context是调用方,以前一直在一个包中调用如,package依包中,Activity依调用Activity贰,Intent.setClass(this,Activit贰)这样不出问题的。 可是如果跨包掉,在Activity依中调用ActivityA,就出现错位了。 结论: Context是被调用方的 ,源码中是Intent.setClass(context,class)调用ComponentName(context,class) public ComponentName(Context pkg, Class cls) { mPackage = pkg.getPackageName()mClass = cls.getName()}可以看出 Context得到包名,class得到类名,来唯一确定Activity欢迎分享,转载请注明来源:内存溢出
评论列表(0条)