activity间怎么传递acitvity或class或content

activity间怎么传递acitvity或class或content,第1张

直接上代码

第一个类是点击传值

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


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11393271.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存