Activity
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.i("Activity生命周期","onCreate()方法调用");
}
@Override
protected void onStart() {
super.onStart();
Log.i("Activity生命周期","onStart()方法调用");
}
@Override
protected void onResume() {
super.onResume();
Log.i("Activity生命周期","onResume()方法调用");
}
@Override
protected void onPause() {
super.onPause();
Log.i("Activity生命周期","onPause()方法调用");
}
@Override
protected void onStop() {
super.onStop();
Log.i("Activity生命周期","onStop()方法调用");
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.i("Activity生命周期","onDestroy()方法调用");
}
创建Activity
- 创建步骤
- 创建继承自Activity的Activity
- 重写需要的回调方法,一般情况下需要重写onCreate方法
- 设置要显示的视图,在onCreate方法中的setContentView中设置
启动和关闭Activity
-
入口Activity
- 在AndroidMainifest.xml
-
其他Activity
- 需要通过intent
- 通过startActivity()`
Button button=(Button)findViewById(R.id.button1);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(MainActivity.this,DetaiActivity.class);//创建Intent对象
startActivity(intent);//启动
}
});
- 关闭Activity
- 使用finish()方法,如果此Activity不是主活动,会返回调用它的界面当中,如果是会直接回到主屏幕中
- 刷新当前中的Activity
- 在Activity中调用onCreate(null);
数据传递
- 在启动Activity的时候会用到Intet,那么就用Intet来传递数据,Intet可以称为两个Activity之间的信使
- 但是Intent本身不具备保存数据的能力,所以需要通过另外一个功能实现,就是Bundle
- Bundle就是键值对的组合,使用putxxx()方法将数据放到Bundle中,再用putExtras()方法取出来保存到Intent中
Button button=(Button)findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String site1=((EditText)findViewById(R.id.diqu)).getText().toString();//获取输入的地区
String site2=((EditText)findViewById(R.id.jiedao)).getText().toString();//获取输入的街道
String site3=((EditText)findViewById(R.id.xxdz)).getText().toString();//获取输入的详细地址
String name=((EditText)findViewById(R.id.name)).getText().toString();//获取名字
String phone=((EditText)findViewById(R.id.phone)).getText().toString();//获取输入的电话
String email=((EditText)findViewById(R.id.youbian)).getText().toString();//获取输入的邮箱
//判断是否有没有输入的
if (!"".equals(site1) && !"".equals(site2) && !"".equals(site3) && !"".equals(name) && !"".equals(phone) && !"".equals(email) )
{
Intent intent=new Intent(MainActivity.this,DetaiActivity.class);//创建Intent对象
Bundle bundle=new Bundle();//创建Bundel对象
bundle.putCharSequence("name",name);//保存数据
bundle.putCharSequence("phone",phone);
bundle.putCharSequence("site1",site1);
bundle.putCharSequence("site2",site2);
bundle.putCharSequence("site3",site3);
intent.putExtras(bundle);//将数据传到Intent中、
startActivity(intent);//启动Activity
}else{
Toast.makeText(MainActivity.this, "请将收货地址填写完整", Toast.LENGTH_SHORT).show();
}
}
});
在另一个Activity中
//获取数据
Intent intent=getIntent();//获取Intent对象
Bundle bundle=intent.getExtras();//获取传递过来的Bundel
String name=bundle.getString("name");//分别获取想要的信息
String phone=bundle.getString("phone");
String site=bundle.getString("site1")+bundle.getString("site2")+bundle.getString("site3");
//获取用于显示的文本框
TextView tv_name=(TextView)findViewById(R.id.tv_name);
TextView tv_phone=(TextView)findViewById(R.id.tv_phone);
TextView tv_site=(TextView)findViewById(R.id.tv_site);
//设置获取到的文字
tv_name.setText(name);
tv_phone.setText(phone);
tv_site.setText(site);
调用另一个Activitybig返回结果
- 使用startActivityForResult()方法,
Activity_Main中的代码,添加一个图片视图和按钮
<ImageView
android:id="@+id/imageView"
android:layout_width="100dp"
android:layout_gravity="center_horizontal"
android:layout_height="100dp" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="选择" />
________________________________________________________
在另外一个Activity的代码,用于显示并且选择图片
<GridView
android:id="@+id/gridView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="10dp"
android:horizontalSpacing="3dp"
android:verticalSpacing="3dp"
android:numColumns="4"/>
DetaiActivity中的代码
//指定适配器
GridView gridView = (GridView) findViewById(R.id.gridView);
BaseAdapter adapter=new BaseAdapter() {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
if(convertView==null){
imageView=new ImageView(DetaiActivity.this);
imageView.setAdjustViewBounds(true);
imageView.setMaxWidth(158);
imageView.setMaxHeight(150);
imageView.setPadding(5,5,5,5);
}else{
imageView=(ImageView)convertView;
}
imageView.setImageResource(imageID[position]);
return imageView;
}
@Override
public int getCount() {
return imageID.length;
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
};
gridView.setAdapter(adapter);
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent intent=getIntent();
Bundle bundle=new Bundle();
bundle.putInt("imageid",imageID[position]);//将选中的图片ID传输出去
intent.putExtras(bundle);
setResult(0x11,intent);
finish();
}
});
MainActivity中的代码
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button=(Button)findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(MainActivity.this,DetaiActivity.class);
startActivityForResult(intent,0x11);//传入参数,要启动的Activuty对象,请求码
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode==0x11 && resultCode==0x11){
Bundle bundle=data.getExtras();//获取BUndel
int imageid=bundle.getInt("imageid");
ImageView imageView=(ImageView)findViewById(R.id.imageView);
imageView.setImageResource(imageid);
}
}
效果图展示
使用Fragment
- 用于在一个Activity中描述一些行为或者一部分用户界面,可以在多个Activity中重用一个Fragment
- 生命周期,一个Fragment必须嵌入到一个Activity中
- 通过extends Fragment创建
在Activity中添加Fragment - 直接在布局文件中添加
在两个不同的xml布局文件中建立
在fragment_List中放入,在布局中不要设置android:layout_weight=""
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="List Fragment"
android:textSize="20sp"/>
在 ragment_List中放入,布局中不要设置android:layout_weight=""
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Detail Fragment"
android:textSize="20sp"
/>
然后分别建立类并继承Fragment,实现onCreateView方法
例如
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view=inflater.inflate(R.layout.fragment_list,container,false);
return view;
}
然后再MainActivity中写
<fragment
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:name="com.example.demo2.ListFragment"
android:id="@+id/list"
android:layout_weight="1"
/>
<fragment
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:name="com.example.demo2.DetailFragment"
android:id="@+id/detai"
android:layout_weight="2"
权重值
/>
- 在Activity运行时添加Fragment
getSupportFragmentManager()
.beginTransaction()
.add(R.id.fl,new DetailFragment())
.commit();
- 使用Fragment
需要创建好4个界面,如图所示。
并设置好,创建好对应的类,并重写onCreateView方法
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ImageView imageView1=(ImageView)findViewById(R.id.image1);
ImageView imageView2=(ImageView)findViewById(R.id.image2);
ImageView imageView3=(ImageView)findViewById(R.id.image3);
ImageView imageView4=(ImageView)findViewById(R.id.image4);
imageView1.setOnClickListener(l);
imageView2.setOnClickListener(l);
imageView3.setOnClickListener(l);
imageView4.setOnClickListener(l);
}
View.OnClickListener l=new View.OnClickListener() {
@Override
public void onClick(View v) {//覆盖OnClickListener方法
FragmentManager fm= getSupportFragmentManager();
FragmentTransaction ft=fm.beginTransaction();
Fragment f=null;
switch (v.getId()){
case R.id.image1:
f=new WeChat_fragment();
break;
case R.id.image2:
f=new Message_Fragment();
break;
case R.id.image3:
f=new Find_fragment();
break;
case R.id.image4:
f=new me_Fragment();
break;
default:;
break;
}
ft.replace(R.id.fragment,f);
ft.commit();
}
};
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="16dp"
tools:context=".MainActivity">
创建一个fragment,并默认显示WeChat_fragment
<fragment
android:id="@+id/fragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:name="com.example.demo2.WeChat_fragment"
/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:orientation="horizontal"
android:layout_alignParentBottom="true"
>
<ImageView
android:id="@+id/image1"
android:layout_width="0dp"
android:layout_height="50dp"
android:layout_weight="1"
android:src="@drawable/button1"
/>
<ImageView
android:id="@+id/image2"
android:layout_width="0dp"
android:layout_height="50dp"
android:layout_weight="1"
android:src="@drawable/button2"
/>
<ImageView
android:id="@+id/image3"
android:layout_width="0dp"
android:layout_height="50dp"
android:layout_weight="1"
android:src="@drawable/button3"
/>
<ImageView
android:id="@+id/image4"
android:layout_width="0dp"
android:layout_height="50dp"
android:layout_weight="1"
android:src="@drawable/button4"
/>
</LinearLayout>
</RelativeLayout>