Android(五)

一、activity中的配置文件

    当我们不使用导向时,新建一个类。要想让他成为跳转界面,就要在配置文件中登记新建的类,要写在AndroidManifest.XML配置文件的application标签内

		<activity 
            android:name=".B"
            android:label="@string/app_name">//android:label="B">这个是一个标签,可以改名字
		 </activity>
二.activity回传信息
  1. 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();//结束当前界面
    	}
    
  2. 简单设置文本(简化版本)
    	if(requestCode==1&&resultCode==3){
    			TextView text=(TextView) findViewById(R.id.textView3);
    			text.setText("你已登录···············");
    	}	
    	public void backA(View v){ 
    		setResult(3);//也可以直接返回状态码,简单的像上面一样设置文本
    		finish();//结束当前界面
    	}
    
三.广播(防丢失功能)
  1. 创建静态广播
    		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>
    
  2. 创建动态广播(需要新建一个Java文件作为广播接收器,不需要创建配置文件)
    2.1 这里要放在广播接收器Java文件的配置文件标签里面 里面,但是动态的不需要,就直接在主界面Java文件中写,如下2.2
    		<intent-filter >
    			<action
    				android:name="android.net.conn.CONNECTIVITY_CHANGE">     //过滤条件,就是2.2中的过滤条件
    		</intent-filter>
    
    2.2 (写在onCreate函数里面)
    		//动态创建广播(监测系统广播)
    		   BroadCastReceiver myBroadCast=new BroadCastReceiver();//声明一个广播对象
    		   IntentFilter it=new IntentFilter();//过滤器
    		   it.addAction("android.net.conn.CONNECTIVITY_CHANGE");//增加过滤条件 ,注册(相当于在配置文件中配置)
    		   registerReceiver(myBroadCast, it);//注册接收器(第一个参数:广播的名称,第二个参数:过滤的条件)
    		}
    
    2.3 注意***
    		 //动态注册的广播,程序完全关闭时,尽量注销掉
    		protected void onDestroy() {
    			super.onDestroy();
    			unregisterReceiver(myBroadCast);//当程序完全关闭时,注销掉广播
    		}
    
    2.4 动态广播和静态广播的区别
    1> 不需要配置文件
    2> 第一种是无论如软件开关,广播文件都是在那里,第二中,广播就可以 随着软件关闭而关闭
  3. 两个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判断,来匹配特征
    			public void onReceive(Context context, Intent intent) {
    				if(action.equals(intent.getAction())){//action为上面设置设置的要监听的软件的特征
    					Toast.makeText(context, "嘿嘿被我逮到了吧", Toast.LENGTH_SHORT).show();
    				}
    			}
    
    3.4 在a_app的配置文件中加标签(注册广播接收器)
    			<receiver 
    				android:name="com.example.a_app.MyBroadCastReceiver">
    				<intent-filter >  //过滤器标签
    					<action android:name="com.example.broadcast.MY_self"/>   //在过滤器中加要监听的特征
    				</intent-filter>
    			</receiver>
    
    2>b_app中
    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;
		}
	}
发布了72 篇原创文章 · 获赞 3 · 访问量 3564

猜你喜欢

转载自blog.csdn.net/id__39/article/details/104775700