Android Intent封裝的實例詳解
Android Intent封裝的實例詳解
什么是Intent:
Intent是協(xié)調(diào)應(yīng)用間、組件之間的通訊和交互。通過Intent你可以啟動Activity、Service、Broadcasts。更可以跨程序調(diào)用第三方組件。例如:啟動撥打電話界面、音樂播放等。
| 組件 | 啟動 |
| Activity | startActicity() |
| Service | startService(),bindService( ) |
| Broadcasts | sendBroadcast() |
使用Intent:
栗子:在一個Activity中添加一個點擊按鈕->點擊啟動第二個Activity(需要兩個String類型的參數(shù))


第一個Activity的按鈕點擊代碼:
public void onclick(View view){
Intent intent=new Intent(this,Main2Activity.class);
intent.putExtra("text1","xiaoming");
intent.putExtra("text2","中國人");
startActivity(intent);
}
第二個Activity接受Intent數(shù)據(jù)代碼:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
ButterKnife.bind(this);
initView();
}
private void initView() {
String text1 = getIntent().getStringExtra("text1");
String text2 = getIntent().getStringExtra("text2");
mTextView.setText(text1);
mTextView2.setText(text2);
}
這是常見的Intent的使用,但是它存在這很大弊端。假如你的項目越來越多,你在啟動第二個Activity中參數(shù)漏掉一個有可能引起程序奔潰。那么如何避免這種情況呢:
- 參數(shù)是第二個Activity所需的,那么為何不由他來進行參數(shù)設(shè)定呢。按照它的規(guī)范來
- 將Intent的實例交給第二個Activity。它更需要這個方法的封裝。也就是開閉原則
另一種思路代碼實現(xiàn):
第一個Activity的按鈕點擊代碼:
public void onclick(View view){
//調(diào)用第二個Activity封裝好的Intent
Intent intent = Main2Activity.newIntent(MainActivity.this, "hsis", "wodhis");
startActivity(intent);
}
第二個Activity的代碼:
public class Main2Activity extends AppCompatActivity {
private static final String INTENT_TEXT1="intent_text1";
private static final String INTENT_TEXT2="intent_text2";
private String text1,text2;
@butterknife.Bind(R.id.textView)
TextView mTextView;
@butterknife.Bind(R.id.textView2)
TextView mTextView2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
ButterKnife.bind(this);
initIntent();
initView();
}
public static Intent newIntent(Activity activity,String te, String te2){
Intent intent=new Intent(activity,Main2Activity.class);
intent.putExtra(INTENT_TEXT1,te);
intent.putExtra(INTENT_TEXT2,te2);
return intent;
}
private void initIntent(){
text1=getIntent().getStringExtra(INTENT_TEXT1);
text2=getIntent().getStringExtra(INTENT_TEXT2);
}
private void initView() {
mTextView.setText(text1);
mTextView2.setText(text2);
}
}
通過比較,很明顯我們把Intent需要的傳參邏輯封裝到所要啟動的Activity,這樣的好處就是,按照我的規(guī)則來啟動我?!段业囊?guī)則我做主》。而且在其他地方啟動Main2Activity時,直接調(diào)用newIntent()傳入相應(yīng)的參數(shù)即可。
如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
相關(guān)文章
kotlin中EditText賦值Type mismatch方式
這篇文章主要介紹了kotlin中EditText賦值Type mismatch方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03
Android編程實現(xiàn)動態(tài)更新ListView的方法
這篇文章主要介紹了Android編程實現(xiàn)動態(tài)更新ListView的方法,結(jié)合實例形式詳細分析了ListView的布局及動態(tài)更新實現(xiàn)方法,需要的朋友可以參考下2016-02-02
Android 安全加密:數(shù)字簽名和數(shù)字證書詳解
本文主要介紹Android 安全加密數(shù)字簽名和數(shù)字證書的資料,這里整理詳細的資料及數(shù)字簽名和數(shù)字證書應(yīng)用詳解,有需要的小伙伴可以參考下2016-09-09
Android中使用TextView實現(xiàn)高仿京東淘寶各種倒計時效果
今天給大家?guī)淼氖莾H僅使用一個TextView實現(xiàn)一個高仿京東、淘寶、唯品會等各種電商APP的活動倒計時。今天小編把實現(xiàn)代碼分享到腳本之家平臺,對android textclock 倒計時效果感興趣的朋友參考下吧2016-10-10
Android中ShapeableImageView使用實例詳解(告別shape、三方庫)
之前Google推送了文章,Android?Material組件1.2.0里面就有ShapeableImageView,不用像以前再寫shape,下面這篇文章主要給大家介紹了關(guān)于Android中ShapeableImageView使用的相關(guān)資料,需要的朋友可以參考下2022-09-09
Android Studio真機無線連接USB設(shè)備調(diào)試運行詳解流程
你在Android Studio寫app時是否也有想過如果可以不用數(shù)據(jù)線連接手機調(diào)試運行就好了?如果需要取出數(shù)據(jù)線插接的話我肯定是嫌麻煩的,但是模擬器有時候需要測試一些需要硬件支持的功能時又不管用,所以最好的測試還是在真機上,本篇教你扔掉數(shù)據(jù)線來無線調(diào)試2021-11-11
Android自定義布局實現(xiàn)仿qq側(cè)滑部分代碼
這篇文章主要為大家詳細介紹了自定義布局實現(xiàn)仿qq側(cè)滑Android部分代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-03-03
Android開發(fā)導(dǎo)入項目報錯Ignoring InnerClasses attribute for an anonym
今天小編就為大家分享一篇關(guān)于Android開發(fā)導(dǎo)入項目報錯Ignoring InnerClasses attribute for an anonymous inner class的解決辦法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-12-12

