一、activity中的配置文件
当我们不使用导向时,新建一个类。要想让他成为跳转界面,就要在配置文件中登记新建的类,要写在AndroidManifest.XML配置文件的application标签内
<activity
android:name=".B"
android:label="@string/app_name">//android:label="B">这个是一个标签,可以改名字
</activity>
二.activity回传信息
- activity回传信心
//在A界面中-------------------------------- public void toB(View v){ Button btnlogin=(Button)findViewById(R.id.login); EditText user=(EditText)findViewById(R.id.username); String username=user.getText().toString(); Intent intent=new Intent(); intent.putExtra("name", username); intent.setClass(MainActivity.this, B.class); //startActivity(intent); startActivityForResult(intent, 1);//注意这里,需要回传信息,就需要把上面的句子换成下面的句子,返回一个结果,参数为跳转页面和状态码 } //需要在oncreate函数外面再写一个函数,如下 protected void onActivityResult(int requestCode,int resultCode,Intent data){//第一个参数为请求码(在上面写的时候可以自己设置),第二个参数为返回结果码值(该值在跳转到的界面里面result里面设置) if(requestCode==1&&resultCode==2){ String result=data.getStringExtra("result");//返回页面设置的字符串,从这里获得 Toast.makeText(getApplicationContext(), result, Toast.LENGTH_SHORT).show(); } } //写在B界面中---------------------------------- public void backA(View v){//按钮点击事件 Intent intent=new Intent(); intent.putExtra("result", "你已登录"); setResult(2,intent);//设置返回页(注意:除了返回密码,后面还有一个界面跳转意图intent) finish();//结束当前界面 }
- 简单设置文本(简化版本)
if(requestCode==1&&resultCode==3){ TextView text=(TextView) findViewById(R.id.textView3); text.setText("你已登录···············"); } public void backA(View v){ setResult(3);//也可以直接返回状态码,简单的像上面一样设置文本 finish();//结束当前界面 }
三.广播(防丢失功能)
- 创建静态广播
public void onClick(View arg0) {//点击事件创建 Intent intent=new Intent(MainActivity.this,BroadCastReceiver.class);//直接把跳转类的setclass()合并到这里 sendBroadcast(intent);//发送广播 } //接收广播需要新建一个Java文件,创建接收器基本结构 public class BroadCastReceiver extends BroadcastReceiver{//广播 接受器基本结构 public void onReceive(Context arg0, Intent arg1) { Toast.makeText(arg0, "接收到广播了", Toast.LENGTH_SHORT).show(); } } //配置文件中配置新建的接收器文件(放在AndroidManifest.XML中的) <receiver android:name="com.example.broad.BroadCastReceiver"> </receiver>
- 创建动态广播(需要新建一个Java文件作为广播接收器,不需要创建配置文件)
2.1 这里要放在广播接收器Java文件的配置文件标签里面 里面,但是动态的不需要,就直接在主界面Java文件中写,如下2.2
2.2 (写在onCreate函数里面)<intent-filter > <action android:name="android.net.conn.CONNECTIVITY_CHANGE"> //过滤条件,就是2.2中的过滤条件 </intent-filter>
2.3 注意***//动态创建广播(监测系统广播) BroadCastReceiver myBroadCast=new BroadCastReceiver();//声明一个广播对象 IntentFilter it=new IntentFilter();//过滤器 it.addAction("android.net.conn.CONNECTIVITY_CHANGE");//增加过滤条件 ,注册(相当于在配置文件中配置) registerReceiver(myBroadCast, it);//注册接收器(第一个参数:广播的名称,第二个参数:过滤的条件) }
2.4 动态广播和静态广播的区别//动态注册的广播,程序完全关闭时,尽量注销掉 protected void onDestroy() { super.onDestroy(); unregisterReceiver(myBroadCast);//当程序完全关闭时,注销掉广播 }
1> 不需要配置文件
2> 第一种是无论如软件开关,广播文件都是在那里,第二中,广播就可以 随着软件关闭而关闭 - 两个app之间的广播监测
1>a_app中
3.1 a_app 需要一个广播接收器 class MyBroadCastReceiver extends BroadcastReceiver
3.2 广播接收器里面需要写具体监听软件所具有的特征 private String action=“com.example.broadcast.MY_self”; //com.example.broadcast.MY_self可以自己写
3.3 在onReceive中加一个if判断,来匹配特征
3.4 在a_app的配置文件中加标签(注册广播接收器)public void onReceive(Context context, Intent intent) { if(action.equals(intent.getAction())){//action为上面设置设置的要监听的软件的特征 Toast.makeText(context, "嘿嘿被我逮到了吧", Toast.LENGTH_SHORT).show(); } }
2>b_app中<receiver android:name="com.example.a_app.MyBroadCastReceiver"> <intent-filter > //过滤器标签 <action android:name="com.example.broadcast.MY_self"/> //在过滤器中加要监听的特征 </intent-filter> </receiver>
1.b_app需要在主界面Java文件中具体点击事件设置中添加自己所具有的特征Intent intent=new Intent(); intent.setAction("com.example.broadcast.MY_self");//设置自己特征 sendBroadcast(intent);//发送广播
四、图片点击提示(批量使用switch更方便)
public void onClick(View arg0) {
switch (arg0.getId()) {
case R.id.mar1:Toast.makeText(getApplicationContext(), "钢铁侠", 2).show();
break;
case R.id.mar2:Toast.makeText(getApplicationContext(), "mar2", 2).show();
break;
default:
break;
}
}