国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android Intent封裝的實例詳解

2019-10-22 18:26:48
字體:
來源:轉載
供稿:網友

Android Intent封裝的實例詳解

什么是Intent:

Intent是協調應用間、組件之間的通訊和交互。通過Intent你可以啟動Activity、Service、Broadcasts。更可以跨程序調用第三方組件。例如:啟動撥打電話界面、音樂播放等。 

 

組件     啟動
Activity startActicity()
Service startService(),bindService( )
Broadcasts sendBroadcast()

 

使用Intent:

栗子:在一個Activity中添加一個點擊按鈕->點擊啟動第二個Activity(需要兩個String類型的參數)

     Android,Intent封裝,Intent封裝的詳解Android,Intent封裝,Intent封裝的詳解

第一個Activity的按鈕點擊代碼:

 public void onclick(View view){    Intent intent=new Intent(this,Main2Activity.class);    intent.putExtra("text1","xiaoming");    intent.putExtra("text2","中國人");    startActivity(intent);  }

第二個Activity接受Intent數據代碼:

 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中參數漏掉一個有可能引起程序奔潰。那么如何避免這種情況呢:

  1. 參數是第二個Activity所需的,那么為何不由他來進行參數設定呢。按照它的規范來
  2. 將Intent的實例交給第二個Activity。它更需要這個方法的封裝。也就是開閉原則

另一種思路代碼實現:

第一個Activity的按鈕點擊代碼:

 public void onclick(View view){    //調用第二個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,這樣的好處就是,按照我的規則來啟動我。《我的規則我做主》。而且在其他地方啟動Main2Activity時,直接調用newIntent()傳入相應的參數即可。

如有疑問請留言或者到本站社區交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 永寿县| 香格里拉县| 鲜城| 聊城市| 建平县| 无棣县| 景德镇市| 锦屏县| 嘉鱼县| 林甸县| 呈贡县| 遂昌县| 天柱县| 白沙| 绩溪县| 内江市| 安丘市| 双牌县| 兴宁市| 临泽县| 桃园县| 平泉县| 孟村| 武隆县| 定南县| 霍山县| 当涂县| 花莲县| 资阳市| 峨边| 新干县| 波密县| 扎鲁特旗| 疏附县| 武宁县| 十堰市| 新安县| 铜鼓县| 高邑县| 阿拉善盟| 城步|