編輯:關於Android編程
Android之intent傳值的三種方法分別是:1、startActivity();2、startActivityForResult();3、調用在下個activity自定義的方法“actionStart()”,也就是最佳的方法。
一、一般方式傳值跳轉:startActivity()方法
/* 在MainActivity中定義如下代碼 */
button1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent _intent = new
Intent(MainActivity.this,TwoActivity.class);
//在Intent對象當中添加一個鍵值對
_intent.putExtra(key,value);
startActivity(_intent);
}
});
public class TwoActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.second_layout);
Button button2 = (Button) findViewById(R.id.button_2);
button2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//取得從上一個Activity當中傳遞過來的Intent對象
Intent _intent = getIntent();
//從Intent當中根據key取得value
if (_intent != null) {
String _value = _intent.getStringExtra(key);
Toast.makeText(TwoActivity.this, _value, Toast.LENGTH_SHORT).show();
}
}
});
}
}
二、回調數據式傳值跳轉:startActivityForResult()方法
/* 在MainActivity中定義如下代碼 */
button1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent _intent = new Intent(MainActivity.this,TwoActivity.class);
_intent.putExtra(key, value);
// 第二個參數是請求碼,只要是一個唯一值
startActivityForResult(_intent, 1234);
}
});
// 由於我們是使用startActivityForResult()方法來啟動TwoActivity的
// 在TwoActivity被銷毀之後會回調上一個活動的onActivityResult()方法
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
switch (requestCode) {
case 1234:
if (resultCode == RESULT_OK) {
String returnedData = intent.getStringExtra(key1);
Toast.makeText(MainActivity.this, returnedData, Toast.LENGTH_SHORT).show();
}
break;
default:
}
}
onActivityResult()方法帶有三個參數,第一個參數requestCode,即我們在啟動活動時傳入的請求碼。第二個參數resultCode,即我們在返回數據時傳入結果碼。第三個參數data,即攜帶著返回數據的Intent。由於在一個活動中有可能調用startActivityForResult()方法去啟動很多不同的活動,每一個活動返回的數據都會回調到onActivityResult()這個方法中,因此我們首先要做的就是通過檢查requestCode的值來判斷數據來源。確定數據是從TwoActivity返回的之後,我們再通過resultCode的值來判斷處理結果是否成功。最後從data中取值並打印出來,這樣就完成了向上一個活動返回數據的工作。
public class TwoActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.second_layout);
Button button2 = (Button) findViewById(R.id.button_2);
// 接收從MainaActivity傳遞的數據
Intent _intent = getIntent();
if (_intent != null) {
String _value = _intent.getStringExtra(key);
Toast.makeText(TwoActivity.this, _value, Toast.LENGTH_SHORT).show();
}
button2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.putExtra(key1,value two activity);
// 專門用於向上一個活動返回數據
// 第一個參數用於向上一個活動返回結果碼,一般只使用RESULT_OK或RESULT_CANCELED這兩個值
// 第二個參數則是把帶有數據的Intent傳遞回去
setResult(RESULT_OK, intent);
// 調用了finish()方法來銷毀當前活動
finish();
}
});
}
}
三、啟動活動的最佳寫法
在真正的項目開發中經常會有對接的問題出現。比如TwoActivity並不是由你開發的,但現在你負責的部分需要有啟動TwoActivity這個功能,而你卻不清楚啟動這個活動需要傳遞哪些數據。這時無非就有兩種辦法,一個是你自己去閱讀TwoActivity中的代碼,二是詢問負責編寫TwoActivity的同事。你會不會覺得很麻煩呢?其實只需要換一種寫法,就可以輕松解決掉上面的窘境。
/* 在MainActivity中定義如下代碼 */
button1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
/*最佳數據傳值方法:調用在下個activity自定義的方法*/
TwoActivity.actionStart(MainActivity.this, data1, data2);
}
});
public class TwoActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.second_layout);
}
/*最佳數據傳值方法*/
public static void actionStart(Context context, String data1, String data2) {
Intent intent = new Intent(context, TwoActivity.class);
intent.putExtra(param1, data1);
intent.putExtra(param2, data2);
context.startActivity(intent);
}
}
實現後,所有TwoActivity中需要的數據都是通過actionStart()方法的參數傳遞過來的,然後把它們存儲到Intent中,最後調用startActivity()方法啟動TwoActivity。
這篇博客稍微講解下React-Native中的布局。比較簡單。RN的而布局是用css中的flexbox布局,所以布局起來與android傳統的布局樣式有點像。接下來就結合
CheckBox (多選) extends ButtoncheckBox中選擇器 state_checked : 已經被選中了 state_checkable: 可以被選
今天修復一個使用系統的方法 android.webkit.URLUtil.guessFileName(String url,String contentDispositi
效果圖如下所示:一、shape 樣式:(在drawable新建--》new--》Drawable resource file 在父級標簽selector添加Item )&