編輯:關於Android編程
摘要: 通用的頁面跳轉方法有兩種:1、IntentIntent適合Activity與Activity之間的跳轉,按返回鍵可以直接返回前一頁面缺點:需要到Manifest注冊Activity2、setContentView適合同一Activity裡的不同View之間跳轉優點:按返回 ...
通用的頁面跳轉方法有兩種:
1、Intent
Intent適合Activity與Activity之間的跳轉,按返回鍵可以直接返回前一頁面
缺點:需要到Manifest注冊Activity
2、setContentView
適合同一Activity裡的不同View之間跳轉
優點:按返回鍵不會返回到前一頁面,需要自己添加按鍵監聽代碼來實現
[java] import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.*;
public class IntentTest extends Activity {
private LinearLayout mainView=null;
private Button button1=null;
private Button button2=null;
private LinearLayout layout=null;
private TextView tv=null;
/*
* 由於setContentVeiw()函數返回是void,系統中沒有提供獲取當前View的函數
* 所以此處添加一個整形變量用來指示當前View的id
*/
private int currentViewId;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//tv初始化
tv=new TextView(this);
tv.setText("這是layout裡面的tv");
//layout初始化
layout=new LinearLayout(this);
layout.setId(100);//這裡需要指定id,否則默認的id會和mainView一樣,都是-1
layout.setLayoutParams(new LinearLayout.LayoutParams(-1,-1));
layout.addView(tv);
//button1初始化
button1=new Button(this);
button1.setLayoutParams(new LinearLayout.LayoutParams(-2,-2));
button1.setText("Intent方式跳轉");
button1.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
/*此處用Intent來實現Activity與Activity之間的跳轉*/
Intent intent=new Intent();
intent.setClass(IntentTest.this,MyActivity.class);
//Intent intent=new Intent(IntentTest.this,MyActivity.class);
startActivity(intent);
}
});
//button2初始化
button2=new Button(this);
button2.setLayoutParams(new LinearLayout.LayoutParams(-2,-2));
button2.setText("setContentView方式跳轉");
button2.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
//此處用setContentView方式來實現統一Activity不同View跳轉
setCurrentView(layout);
}
});
//mianView初始化
mainView=new LinearLayout(this);
mainView.setId(1000);//指定id
mainView.setLayoutParams(new LinearLayout.LayoutParams(-1,-1));
mainView.setOrientation(LinearLayout.VERTICAL);
mainView.addView(button1);
mainView.addView(button2);
//顯示mainView
setCurrentView(mainView);
}
/*
* 這裡重寫onKeyDown()函數,實現返回鍵的監聽
* 如果通過顯示的View對keyListener進行監聽,則返回鍵監聽不到
* 所以此處是通過在Activity裡面重寫onKeyDown()函數來實現監聽
* 此處如果不攔截監聽的話,在顯示layout後按返回鍵則直接執行退出程序
*/
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
if(currentViewId==layout.getId()){
setCurrentView(mainView);
}else{
System.exit(0);
}
return false;
}
return false;
}
/*自定義函數setCurrentView()*/
public void setCurrentView(View view){
currentViewId=view.getId();
//此處用setContentView方式來實現統一Activity不同View跳轉
setContentView(view);
}
}
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.*;
public class IntentTest extends Activity {
private LinearLayout mainView=null;
private Button button1=null;
private Button button2=null;
private LinearLayout layout=null;
private TextView tv=null;
/*
* 由於setContentVeiw()函數返回是void,系統中沒有提供獲取當前View的函數
* 所以此處添加一個整形變量用來指示當前View的id
*/
private int currentViewId;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//tv初始化
tv=new TextView(this);
tv.setText("這是layout裡面的tv");
//layout初始化
layout=new LinearLayout(this);
layout.setId(100);//這裡需要指定id,否則默認的id會和mainView一樣,都是-1
layout.setLayoutParams(new LinearLayout.LayoutParams(-1,-1));
layout.addView(tv);
//button1初始化
button1=new Button(this);
button1.setLayoutParams(new LinearLayout.LayoutParams(-2,-2));
button1.setText("Intent方式跳轉");
button1.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
/*此處用Intent來實現Activity與Activity之間的跳轉*/
Intent intent=new Intent();
intent.setClass(IntentTest.this,MyActivity.class);
//Intent intent=new Intent(IntentTest.this,MyActivity.class);
startActivity(intent);
}
});
//button2初始化
button2=new Button(this);
button2.setLayoutParams(new LinearLayout.LayoutParams(-2,-2));
button2.setText("setContentView方式跳轉");
button2.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
//此處用setContentView方式來實現統一Activity不同View跳轉
setCurrentView(layout);
}
});
//mianView初始化
mainView=new LinearLayout(this);
mainView.setId(1000);//指定id
mainView.setLayoutParams(new LinearLayout.LayoutParams(-1,-1));
mainView.setOrientation(LinearLayout.VERTICAL);
mainView.addView(button1);
mainView.addView(button2);
//顯示mainView
setCurrentView(mainView);
}
/*
* 這裡重寫onKeyDown()函數,實現返回鍵的監聽
* 如果通過顯示的View對keyListener進行監聽,則返回鍵監聽不到
* 所以此處是通過在Activity裡面重寫onKeyDown()函數來實現監聽
* 此處如果不攔截監聽的話,在顯示layout後按返回鍵則直接執行退出程序
*/
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
if(currentViewId==layout.getId()){
setCurrentView(mainView);
}else{
System.exit(0);
}
return false;
}
return false;
}
/*自定義函數setCurrentView()*/
public void setCurrentView(View view){
currentViewId=view.getId();
//此處用setContentView方式來實現統一Activity不同View跳轉
setContentView(view);
}
}
[java] import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class MyActivity extends Activity{
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView tv=new TextView(this);
tv.setText("我是MyActivity裡的tv");
setContentView(tv);
}
}
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class MyActivity extends Activity{
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView tv=new TextView(this);
tv.setText("我是MyActivity裡的tv");
setContentView(tv);
}
}
翻譯 By Long Luo 原文鏈接:Introducing Smoothie Pattrn UI中的很大一部分是在滑動時從雲端獲取圖片列表。所以我
靠譜助手安裝失敗彈窗提示需要.NET Framework 2.0或.NET Framework 4.0,這是因為系統沒有安裝.NET Frame
本文實例為大家分享了Android普通購物車制作過程,供大家參考,具體內容如下1.最新項目新增了類似購物車功能,如下圖所示:當時剛看到此頁面的時候,第一反應是利用 Lis
前言單點登錄SSO(Single Sign On)說得簡單點就是在一個多系統共存的環境下,用戶在一處登錄後,就不用在其他系統中登錄,也就是用戶的一次登錄能得到其他所有系統