页面跳转就是我们从一个Activity跳到到另一个Activity,想弄明白一个Activity具体怎么跳转到另一个Activity的,就必须明白Activity具体怎么在内存中存放的。我们都知道数据的在内存中的存放形式有多种,比如堆、栈、队列、树等等,而Activity在内存中存放的形式就是栈,而栈的特点就是先进后出,所以我们一次打开n个界面后,按返回键,界面是按着打开的顺序依次回退回去的。

在代码中我们具体该怎么实现一个界面跳转到另一个界面的呢?我们都知道Activity是四大组件之一,而四大组件是都需要在AndroidManifest中注册过后才能使用的,所以在我们创建另一个Activity类时,一定要在xml的配置文件中注册一下,当然每一个Activity都缺少不了自己独有的布局文件。下面是配置文件的一些相关信息:

AndroidManifest.xml文件是应用的清单配置文件 

 

   * 应用的唯一标识的包名,只在AndroidManifest.xml中存在,package 

 

   * application标签的作用是,配置应用的基本信息 

 

   * icon:应用图标  lable:应用的名称  theme:应用的主题 

 

   * activity标签的作用是注册activity 

 

   * name:用来标识activity的路径和类名,包名+类名   .类名:当前的activity就在默认的包下 

 

   * Activity的启动模式:standard:默认的启动方式,把activity放入栈中,先进后出 

 

   * SingleTop:若已经存在的activity,则把上层的其他activity删除,把启动的这个置顶 

 

   * SingleInstance:在内存中只存在一个activity 

 

   * SingleTask:类似于SingleTop 

 

  当这一切都创建好以后,我们该怎么实现具体跳转代码呢?这个时候我们还需要用到Intent: 

 

  Activity的跳转步骤 

 

   * 1.新建一个Activity,并且建立一个与之匹配的布局,并绑定 

 

   * 2.在AndroidManifest中注册Activity 

 

   * 3.在某一个特定的环境下,建立intent意图对象,在构造方法中传入要跳转的Activity   Intent intent=new Intent(MainActivity.this,Myactivity.class); 

 

   * 4.启动意图Intent对象 

 

   * startActivity(intent) 

 

  具体代码实现如下: 

 

  Intent intent_deter=new Intent(MainActivity.this,loginActivity.class); 

 

     startActivity(intent_deter); 

 
 
 
 

    

 

   * 利用Intent携带数据传值 

 

   * 1.携带:调用Intent的putExtra(key,value)方法,用于是当前Intent携带数据 

 

   * 2.得到:在目标Activity中,调用getIntent().getExtras().get(key)方法可以得到Intent中携带的内容或者利用getIntent().getStringExtra(key)方法 

 

   * 

 

   * A-->B,在B界面中做完某些操作以后,得到结果,返回给A,让A根据返回的数据,更新自己的界面 

 

   * 1.A-->B,startActivityForResult(请求码,Intent);Intent用来启动B,传值给B 

 

   * 2.在B中做完某些操作之后,得到结果:setResult(返回码,Intent);Intent用来传值给A 

 

   * 3.A得到数据,让A根据返回的数据,更新自己的界面:在A中重写onActivityResult(请求码,返回码,Intent) 

 

   * 其中,请求码来自于第1步,返回码来自于第2步,Intent来自于第2步 

 

   * 4.根据3中的请求码,返回码和Intent,共同来更新A中的UI信息 

 

  A界面——>B界面 

 

  A:Intent intent_reg=new Intent(MainActivity.this,regActivity.class); 

 

     startActivityForResult(intent_reg,1); 

 

  B界面——>A界面 

 

  一个Button点击事件 

 

  btn_suc.setOnClickListener(new OnClickListener() { 

 

      

 

     @Override 

 

     public void onClick(View v) { 

 

      // TODO Auto-generated method stub 

 

      Intent intent=new Intent(); 

 

      if(et_psw.getText().toString().equals(et_repsw.getText().toString())) 

 

      { 

 

  //获得B界面中的EditText编辑框中的内容 

 

       intent.putExtra("name", et_name.getText().toString()); 

 

       intent.putExtra("psw", et_psw.getText().toString()); 

 

       setResult(0,intent); 

 

      } 

 

  //切记,最后一定要调用finish()方法 

 

      finish(); 

 

     } 

 

    }); 

 

  A界面接收B界面中传回来的内容 

 

  //这个时候我们需要重写一个onActivityResult方法,这个时候我们就可以根据传回来的值更新A界面了 

 

  @Override 

 

   protected void onActivityResult(int requestCode, int resultCode, Intent data) { 

 

    // TODO Auto-generated method stub 

 

    super.onActivityResult(requestCode, resultCode, data); 

 

  //et_name和et_psw只是名字和B界面中的控件名字一样 

 

    et_name.setText(data.getExtras().get("name").toString()); 

 

    et_psw.setText(data.getExtras().get("psw").toString()); 

 

   } 

 
 
 
 

  Activity内的按键监听,而这个按键监听就死我们手机home按键旁边的那个按键,如果需要用到我们需要重写一个onKeyDown方法: 

 

  public boolean onKeyDown(int keyCode, KeyEvent event){ 

 

  //返回按键监听 

 

  if(keyCode==KeyEvent.KEYCODE_BACK){ 

 

  return true; 

 

  } 

 

  //Menu按键监听 

 

   if(keyCode==KeyEvent.KEYCODE_MENU){ 
 
 
 

   return true; 
 
 
 

   } 
 
 

  } 

 

  触摸监听 

 

  public boolean onTouchEvent(MotionEvent event){ 

 

  //得到当前触摸的坐标X,Y 

 

  double getX=event.getX(); 

 

  double getY=event.getY(); 

 

  //然后得到当前触摸的状态 

 

  //按下状态 

 

  if(event.getAction()==MotionEvent.ACTION_DOWN){ 

 

  return true; 

 

  } 

 

  //移动状态 

 

   if(event.getAction()==MotionEvent.ACTION_MOVE){ 
 
 
 

   return true; 
 
 
 

   } 
 
 

  //抬起状态 

 

   if(event.getAction()==MotionEvent.ACTION_UP){ 
 
 
 

   return true; 
 
 
 

   } 
 
 

  }