Android课上学了Activity之间传值的问题,涉及到Intent,Bundle,按钮事件还有Android的一些基础知识,总结一下留以后复习用。
R类:
Intent:
Intent intent = new Intent();
intent.setClass(MainActivity.this,NextActivity.class);
start(intent);
这样就可以从MainActivity转向NextActivity。
Bundle:
Bundle类似map,提供一种key-value的键值对应关系,当然一个Bundle的对象可以存放很多个键值对。Bundle可以用于Activity之间的值传递,就是在MainActivity中把要传递的信息存在Bundle的对象里,然后用intent传递,接收方可以通过Bundle的key拿到value。
比如在发送方
Intent intent = new Intent();
intent.setClass(MainActivity.this,NextActivity.class);
Bundle mBundle = new Bundle();
String str="hello";
mBundle.putString("Data",str);//插入键值对,"Data"是键,str是值
intent.putExtras(mBundle);
接收方
Bundle bundle = getIntent().getExtras();
String data = bundle.getString("Data");
Activity:
从功能上说Activity是android 应用程序的基本功能单元,提供一个屏幕,用户可以用来交互为了完成某项任务。
刚创建一个新的Activity时,会自动生成一些代码
public class MainActivity extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings)
{
return true;
}
return super.onOptionsItemSelected(item);
}
}
创建的MainActivity继承了Activity类,重写了onCreate,onCreateOptionsMenu,onOptionsItemSelected三个函数。
onCreate是在Activity被创建时被系统调用,这个方法有一个参数,Bundle类型的savedInstanceState,这个词的字面意思是保存实例状态,而它是怎么做到保存状态的呢?当一个Activity要被kill之前可以调用onSaveInstanceState()来保存当前activity的状态信息,用来保存状态信息的Bundle会同时传给两个方法,一个是onRestoreInstanceState()另一个就是onCreate(),所以信息会存在savedInstanceState中,当这个Activity再次被创建,就能通过调用onCreate获取上次的信息了。函数体中第一句是调用了父类的onCreate函数,为了执行一些必要的逻辑,第二句的作用是给页面指定布局文件资源还有绑定该页面的xml文件。
onCreateOptionsMenu,当用户点击menu按钮时调用这个方法,具体的等学过了再来补...
onOptionsItemSelected,当menu有命令被选择时,会调用此方法,具体的等学过了再来补...
Button:
Button button=(Button)findViewById(R.id.button1);
然后处理这个按钮被点击的事件,我的做法是给按钮注册一个监听器,用匿名内部类实现OnClickListener接口的onClick方法,具体是
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button=(Button)findViewById(R.id.button1);
button.setOnClickListener(mylistener);
}
private OnClickListener mylistener=new OnClickListener()
{
public void onClick(View v)
{
//写按钮被按下后要发生什么
}
};