android實習程序4——頁面跳轉

頁面跳轉

Oracle  (筆試是 寫查詢語句)
java SE
xml解析
jdbc(鏈接數據庫  提供接口)
html     css     javascript( js頁面驗證 )      jquery(實際就是js的封裝)
jsp  (頁面 ,通過jdbc鏈接數據庫,顯式到頁面上)
servlet ()

SSH:   
strace  (控制流程、 )
spring(管理對象 ,配置文件創建對象)
harbinet  (對jdbc封裝,不用寫查詢語句)一級二級緩存 、session

MVC: M:模型        V:視圖           C:控制器(負責界面的打交道)    service(業務)

*************************************************************************
intent 是activity之間負責跳轉的橋樑,負責數據的傳遞

第一種用法:
Intent   intent  = new  Intent(Content , 類名.class)
第一個參數是從哪個activity跳轉
第二個參數是跳轉的目標 activity

第二種用法:
Intent   intent  = new  Intent();
intent.setClass(Context,  類名.class);
startActivity(intent);

現有自己的activity,再有一個清單,實現跳轉
*******************************************************************
傳遞參數的方法:
//獲取輸入框中的輸入用戶名和密碼,並去掉兩端的空格
final EditText user = (EditText) findViewById(R.id.username);
final EditText pwd = (EditText) findViewById(R.id.pwd);

String u = user.getText().toString().trim();
String p = pwd.getText().toString().trim();

第一種:    藉助於Bundle
//存放數據
Bundle bundle = new Bundle();
String user = bundle.putString("user", u); 綁定一個字符串
String pwd = bundle.putString("pwd", p);

或者是bundle.putChar("pwd", p);  //傳遞單個字符 ,實際上可以傳遞8種類型

  //把bundle對象綁定在intent上
  intent.putExtra("bundle", bundle);

//把用戶名和密碼添加到intent對象上
 startActivity(intent);


//從另一個activity中獲取數據
        //從intent對象上獲取bundle對象
      Bundle bundle =intent.getBundleExtra("bundle");
 // 從bundle對象上獲取相對應類型的數據
 String user = bundle.getString("user");
 String pwd = bundle.getString("pwd");

第二種方法:    將數據直接綁定在intent
//綁定數據
intent.putExtra("user", u);
intent.putExtra("pwd", p);
//獲取數據
String user = intent.getStringExtra("user");
String pwd = intent.getStringExtra("pwd");
在項目中常用第二種進行數據傳遞

**********************************************************************
Activity之間跳轉的步驟:
1、創建第二個Activity
2、在清單中註冊activity
3、設置與該activity 對應的佈局文件xml
4、在需要跳轉的監聽器OnClickListener中創建
  Intent intent =new Intent();
 intent.setClass(參數一,參數二);
參數一:當前activity的對象
參數二:要跳轉的activity的類名.class

5、向intent中綁定需要傳遞的數據
intent.putExtra("user", u);
intent.putExtra("pwd", p);

6、調用startActivity(intent);

7、如果需要第二個activity返回處理後的結果
需要把第六步中調用的方法替換爲startActivityForResult();
startActivityForResult(intent , LOGIN_REQUEST);

8、如果需要第二個activity返回處理的結果
第二個activity中調用setResult();    //將數據封裝在intent中
setResult(mainActivity.LOGIN_RESULT,intent);

9、且需要在第一個activity中重寫
onActivityResult(int requestCode, int resultCode, Intent data){}
參數分別爲:請求碼、結果碼、intent對象

10、在清單中註冊activity的步驟:、
<activity
            android:name=".Day04_01Activity"
            android:label="@string/app_name" >    
</activity>
android:name  是該activity的名字
android:label 是該activity的標籤的名字
如果activity作爲作爲該應用程序的入口則在</activity>前加上
 <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
 </intent-filter>

*******************************************************************************
---Activity的生命週期
  1、Activity的狀態
    Activity處於的狀態就是其生命週期處於的狀態。
  2、狀態的種類
       運行狀態:activity處於運行
      暫停狀態: 在鎖屏前或者是被另外一個activity部分遮擋
      停止狀態:被另外一個activity完全遮擋。
  3、與生命週期相關的方法:
    onCreate():當系統創建activity實例以後觸發該方法
    onStart():是當執行完onCreate方法或者onRestart方法以後觸發
    onRestart():這個activity由停止狀態變爲運行狀態,觸發該方法
    onResume():是在onStart方法後面調用
    onPause():是當activity被部分遮擋後觸發該方法
    oStop():當activity被完全遮擋會觸發該方法
    onDestory():是當按返回鍵或者調用finish方法會觸發該方法
  4、activity處於運行狀態
    流程: onCreate-->onStart-->onResume
    a、由系統創建該activity的實例對象
    b、觸發該activity的onCreate方法,在該方法
   中可以設置與該activity對應的佈局文件,初始化組件
    c、觸發onStart方法
    d、觸發onResume方法
    e、activity處於運行狀態
  5、Activity由運行狀態到暫停狀態,然後恢復到運行狀態
  流程: onResume-->onPasue-->onResume
  a、當另外一個activity部分遮擋住該Activity
  b、觸發onPasue方法,在該方法中保存數據的操作,
  該Activity處於暫停狀態
  c、當Activity再次到屏幕的最前面
  d、觸發OnResume方法
  e、該Activity處於運行狀態
 6、由運行狀態到停止狀態,再到運行狀態
  流程: onResume-->onPasue-->onStop-->onRestart-->onStart-->onResume
  a、當另外一個activity完全遮擋住該Activity
  b、觸發該ACtivity的onPasue方法
  c、觸發該Activity的OnStop方法
  d、當該activity再次回到屏幕的前端
  e、觸發該Activity的onRestart方法
  f、觸發該Activity的onStart方法
  g、觸發該Activity的onResume方法
  h、該Activity處於運行狀態
 7、由運行狀態到銷燬
  流程:onResume-->onpasue-->onStop-->onDestory
  a、當用戶點擊返回鍵或者調用了finish方法
  b、觸發onPasue--onStop--onDestory
 8、銷燬
  當手機電量過低或者內存不足,會把處於暫停狀態和
停止狀態的activity銷燬。
 9、如果從A的Activity跳轉到B的Activity,在從
B的Activity跳轉到A的Activity:
  可以在B的Activity中調用startActivity(intent)
但是這種跳轉回去的Activity和之前的Activity不是同一個
對象。
 用finish方法或者按返回鍵回到上一個Activity是同一個
Activity。

************************************************************************
1、實現跳轉
2、登陸、註冊頁面的跳轉

=======================================
1、實現跳轉
.java
package com.tarena.day04_01;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class Day04_01Activity extends Activity {
  
/** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        Button button =(Button)findViewById(R.id.login);
button.setOnClickListener(new OnClickListener(){

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent   intent  = new  Intent();
intent.setClass(Day04_01Activity.this,  SedActivity.class);
startActivity(intent); 
}
});
    }
}

.sedActivity.java
package com.tarena.day04_01;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class SedActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.main2);
}
}

main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/hello" />

    <Button
        android:id="@+id/login"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"     
        android:text="@string/login" 
        />

</LinearLayout>

main2.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/msg" />    

</LinearLayout>

string.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="hello">Hello World, Day04_01Activity!</string>
    <string name="app_name">Day04_01</string>
    <string name="login">登陸</string>
    <string name="msg">跳轉成功</string>
    
</resources>

.Manifest
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.tarena.day04_01"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="15" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:name=".Day04_01Activity"

            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".SedActivity"

            android:label="@string/app_name" >
            

        </activity>
    </application>

</manifest>
==========================================
2、登陸、註冊頁面的跳轉
mainActivity.java
package com.tarena.day04_01;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class mainActivity   extends Activity{

private static final int LOGIN_REQUEST=1;
private static final int RESGISTER_REQUEST =2;
static final int LOGIN_RESULT=100;
private static final int REGISTER_RESULT =200;

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.main3);
Button login = (Button) findViewById(R.id.login);
Button register  =(Button) findViewById(R.id.register);
login.setOnClickListener(new Click());
register.setOnClickListener(new Click());
}
class Click implements OnClickListener{
@Override
public void onClick(View v) {
Intent intent = new Intent();
// TODO Auto-generated method stub
//byte short int char jdk1.6之前,jdk1.7之後可以放字符串
switch(v.getId()){
case R.id.login:
intent.setClass(mainActivity.this, loginActivity.class);
startActivityForResult(intent , LOGIN_REQUEST);
//startActivityForResult(intent , 1);
//startActivity(intent);
break;
case R.id.register:
break;
}
}
}

//處理第二個Activity傳遞過來的數據
//intent data 是傳遞過來的數據
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
switch(requestCode){
case LOGIN_REQUEST:
if(data!=null){
String user = data.getStringExtra("user");
String pwd = data.getStringExtra("user");
String str= "用戶名:"+user+",密碼:"+pwd;
Toast.makeText(mainActivity.this, str, 3000).show();
}
}
}
}

loginActivity.java

package com.tarena.day04_01;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class loginActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button login =(Button)findViewById(R.id.login);
        final EditText user = (EditText) findViewById(R.id.username);
final EditText pwd = (EditText) findViewById(R.id.pwd);
login.setOnClickListener(new OnClickListener(){

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String u = user.getText().toString().trim();
String p = pwd.getText().toString().trim();
Intent intent =new Intent();
intent.putExtra("user", u);
intent.putExtra("pwd", p);
//將數據封裝在intent中
setResult(mainActivity.LOGIN_RESULT,intent);
finish();
}
});
}
}


.main
<?xml version="1.0" encoding="utf-8"?>
  <TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/tableLayout1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

            <TableRow
                android:id="@+id/tableRow5"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" >

               <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" 
                android:text="@string/username"
                />

               <EditText
                   android:id="@+id/username"
                   android:layout_width="wrap_content"
                   android:layout_height="wrap_content"
                   android:hint="請輸入用戶名"
                   >

                   <requestFocus />
               </EditText>
                
            </TableRow>



        <TableRow
            android:id="@+id/tableRow2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >
               <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" 
                android:text="@string/pwd"
                />

               <EditText
                   android:id="@+id/pwd"
                   android:layout_width="wrap_content"
                   android:layout_height="wrap_content"
                   android:hint="請輸入密碼"
                   android:inputType="textPassword" />

        </TableRow>
        
        <TableRow
            android:id="@+id/tableRow2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >
  <Button
                    android:id="@+id/login"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/login" />
        </TableRow>
       
    </TableLayout>


.main2
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <Button
        android:id="@+id/login"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/login" />

    <Button
        android:id="@+id/register"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/register" />

</LinearLayout>


string.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="hello">Hello World, Day04_01Activity!</string>
    <string name="app_name">Day04_01</string>
    <string name="login">登陸</string>
    <string name="msg">跳轉成功</string>
    
    <string name="username">用戶名</string>
     <string name="pwd">密    碼</string>
     
     <string name="register">註冊</string>
</resources>


.manifest
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.tarena.day04_01"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="15" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:name=".Day04_01Activity"
            android:label="@string/app_name" >
           
        </activity>
        <activity
            android:name=".SedActivity"
            android:label="@string/app_name" >
       </activity>
       
        <activity
            android:name=".loginActivity"
            android:label="@string/app_name" >
       </activity>
       
        <activity
            android:name=".mainActivity"
            android:label="@string/app_name" >
             <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
       </activity>
        
    </application>

</manifest>
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章