編輯:關於Android編程
Activity跳轉與傳值,主要是通過Intent類,Intent的作用是激活組件和附帶數據。
一、Activity跳轉
方法一
Intent intent = new Intent(A.this, B.class);
startActivity(intent)
方法二
Intent intent = new Intent();
intent.setClass(A.this, B.class);
startActivity(intent);
實現從A跳轉到B(A、B均繼承自Activity)
二、傳遞數據
Activity A 傳遞數據
方法一
Intent intent = new Intent();
intent.setClass(A.this, B.class);
intent.putExtra("name", "xy");
intent.putExtra("age", 22);
startActivity(intent);
方法二
Intent intent = new Intent(A.this, B.class);
Bundle bundle = new Bundle();
bundle.putString("name", "xy");
bundle.putInt("age", 22);
intent.putExtras(bundle);
startActivity(intent);
Activity B 接收數據
// 獲取參數1
Intent intent = this.getIntent();
String name = intent.getStringExtra("name");
int age = intent.getIntExtra("age", 22); // 缺省值為22
// 獲取參數2
Bundle bundle = intent.getExtras();
String name2 = bundle.getString("name");
int age2 = bundle.getInt("age", 22);
兩種獲取參數方式均可,並不是和傳參1,2方法一一對應
三、Activity返回值
跳轉後前一個Activity已經被destroy了。如若要返回並顯示數據,就必須將前一個Activity再次喚醒,同時調用某個方法來獲取並顯示數據。做法如下
1.從A頁面跳轉到B頁面時不可使用startActivity()方法,而要使用startActivityForResult()方法
2.在A頁面的Activity中,需要重寫onActivityResult(int requestCode, int resultCode, Intent data)方法
Activity A
[java]
// 有返回值的Activity
public void openNewActivity2(View v)
{
Intent intent = new Intent();
intent.setClass(this.getApplicationContext(), OtherActivity2.class);
intent.putExtra("name", "xy");
intent.putExtra("age", 20);
startActivityForResult(intent, 1);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
// requestCode用於區分業務
// resultCode用於區分某種業務的執行情況
if (1 == requestCode && RESULT_OK == resultCode)
{
String result = data.getStringExtra("result");
Toast.makeText(this.getBaseContext(), result, Toast.LENGTH_SHORT).show();
}
else
{
Toast.makeText(this.getBaseContext(), "無返回值", Toast.LENGTH_SHORT).show();
}
}
// 有返回值的Activity
public void openNewActivity2(View v)
{
Intent intent = new Intent();
intent.setClass(this.getApplicationContext(), OtherActivity2.class);
intent.putExtra("name", "xy");
intent.putExtra("age", 20);
startActivityForResult(intent, 1);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
// requestCode用於區分業務
// resultCode用於區分某種業務的執行情況
if (1 == requestCode && RESULT_OK == resultCode)
{
String result = data.getStringExtra("result");
Toast.makeText(this.getBaseContext(), result, Toast.LENGTH_SHORT).show();
}
else
{
Toast.makeText(this.getBaseContext(), "無返回值", Toast.LENGTH_SHORT).show();
}
}
Activity B
[java]
public void close(View v)
{
Intent intent = new Intent();
intent.putExtra("result", "返回值");
this.setResult(RESULT_OK, intent); // 設置結果數據
this.finish(); // 關閉Activity
}
public void close(View v)
{
Intent intent = new Intent();
intent.putExtra("result", "返回值");
this.setResult(RESULT_OK, intent); // 設置結果數據
this.finish(); // 關閉Activity
}
Activity跳轉與傳值,主要是通過Intent類,Intent的作用是激活組件和附帶數據。
一、Activity跳轉
方法一
Intent intent = new Intent(A.this, B.class);
startActivity(intent)
方法二
Intent intent = new Intent();
intent.setClass(A.this, B.class);
startActivity(intent);
實現從A跳轉到B(A、B均繼承自Activity)
二、傳遞數據
Activity A 傳遞數據
方法一
Intent intent = new Intent();
intent.setClass(A.this, B.class);
intent.putExtra("name", "xy");
intent.putExtra("age", 22);
startActivity(intent);
方法二
Intent intent = new Intent(A.this, B.class);
Bundle bundle = new Bundle();
bundle.putString("name", "xy");
bundle.putInt("age", 22);
intent.putExtras(bundle);
startActivity(intent);
Activity B 接收數據
// 獲取參數1
Intent intent = this.getIntent();
String name = intent.getStringExtra("name");
int age = intent.getIntExtra("age", 22); // 缺省值為22
// 獲取參數2
Bundle bundle = intent.getExtras();
String name2 = bundle.getString("name");
int age2 = bundle.getInt("age", 22);
兩種獲取參數方式均可,並不是和傳參1,2方法一一對應
三、Activity返回值
跳轉後前一個Activity已經被destroy了。如若要返回並顯示數據,就必須將前一個Activity再次喚醒,同時調用某個方法來獲取並顯示數據。做法如下
1.從A頁面跳轉到B頁面時不可使用startActivity()方法,而要使用startActivityForResult()方法
2.在A頁面的Activity中,需要重寫onActivityResult(int requestCode, int resultCode, Intent data)方法
Activity A
[java]
// 有返回值的Activity
public void openNewActivity2(View v)
{
Intent intent = new Intent();
intent.setClass(this.getApplicationContext(), OtherActivity2.class);
intent.putExtra("name", "xy");
intent.putExtra("age", 20);
startActivityForResult(intent, 1);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
// requestCode用於區分業務
// resultCode用於區分某種業務的執行情況
if (1 == requestCode && RESULT_OK == resultCode)
{
String result = data.getStringExtra("result");
Toast.makeText(this.getBaseContext(), result, Toast.LENGTH_SHORT).show();
}
else
{
Toast.makeText(this.getBaseContext(), "無返回值", Toast.LENGTH_SHORT).show();
}
}
// 有返回值的Activity
public void openNewActivity2(View v)
{
Intent intent = new Intent();
intent.setClass(this.getApplicationContext(), OtherActivity2.class);
intent.putExtra("name", "xy");
intent.putExtra("age", 20);
startActivityForResult(intent, 1);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
// requestCode用於區分業務
// resultCode用於區分某種業務的執行情況
if (1 == requestCode && RESULT_OK == resultCode)
{
String result = data.getStringExtra("result");
Toast.makeText(this.getBaseContext(), result, Toast.LENGTH_SHORT).show();
}
else
{
Toast.makeText(this.getBaseContext(), "無返回值", Toast.LENGTH_SHORT).show();
}
}
Activity B
[java]
public void close(View v)
{
Intent intent = new Intent();
intent.putExtra("result", "返回值");
this.setResult(RESULT_OK, intent); // 設置結果數據
this.finish(); // 關閉Activity
}
public void close(View v)
{
Intent intent = new Intent();
intent.putExtra("result", "返回值");
this.setResult(RESULT_OK, intent); // 設置結果數據
this.finish(); // 關閉Activity
}
曾經做過一個項目,其中登錄界面的交互令人印象深刻。交互設計師給出了一個非常作的設計,要求做出包含根據情況可變色的下劃線,左側有可變圖標,右側有可變刪除標志的輸入框,如圖
想要學好安卓開發,就必須理解安卓軟件的生命周期,明白一個活動的創建、啟動、停止、暫停、重啟和銷毀的過程,知道各個階段會調用什麼函數進行處理不同的情況,這裡我們就來說說A
一.前言現在的app基本上都需要用到短信功能,注冊時或者有消息通知時需要給用戶發送一條短信,但是對於個人開發者來說,去買第三方的短信服務實在是有點奢侈,很好的是mob為我
Android數據分批加載-滑動到底部自動加載列表2014年5月9日 本博文介紹如何進行數據分批加載,在應用開發當中會經常使用到ListView,點擊更多加載數據是我們經