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>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.