最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android Intent封裝的實(shí)例詳解

 更新時(shí)間:2017年09月30日 09:46:50   作者:HzhiBo  
這篇文章主要介紹了Android Intent封裝的實(shí)例詳解的相關(guān)資料,希望通過(guò)本文能幫助到大家,需要的朋友可以參考下

Android Intent封裝的實(shí)例詳解

什么是Intent:

Intent是協(xié)調(diào)應(yīng)用間、組件之間的通訊和交互。通過(guò)Intent你可以啟動(dòng)Activity、Service、Broadcasts。更可以跨程序調(diào)用第三方組件。例如:?jiǎn)?dòng)撥打電話(huà)界面、音樂(lè)播放等。 

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

使用Intent:

栗子:在一個(gè)Activity中添加一個(gè)點(diǎn)擊按鈕->點(diǎn)擊啟動(dòng)第二個(gè)Activity(需要兩個(gè)String類(lèi)型的參數(shù))

    

第一個(gè)Activity的按鈕點(diǎn)擊代碼:

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

第二個(gè)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);
  }

這是常見(jiàn)的Intent的使用,但是它存在這很大弊端。假如你的項(xiàng)目越來(lái)越多,你在啟動(dòng)第二個(gè)Activity中參數(shù)漏掉一個(gè)有可能引起程序奔潰。那么如何避免這種情況呢:

  1. 參數(shù)是第二個(gè)Activity所需的,那么為何不由他來(lái)進(jìn)行參數(shù)設(shè)定呢。按照它的規(guī)范來(lái)
  2. 將Intent的實(shí)例交給第二個(gè)Activity。它更需要這個(gè)方法的封裝。也就是開(kāi)閉原則

另一種思路代碼實(shí)現(xiàn):

第一個(gè)Activity的按鈕點(diǎn)擊代碼:

 public void onclick(View view){
    //調(diào)用第二個(gè)Activity封裝好的Intent
    Intent intent = Main2Activity.newIntent(MainActivity.this, "hsis", "wodhis");
    startActivity(intent);
  }

第二個(gè)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);
  }
}

通過(guò)比較,很明顯我們把Intent需要的傳參邏輯封裝到所要啟動(dòng)的Activity,這樣的好處就是,按照我的規(guī)則來(lái)啟動(dòng)我?!段业囊?guī)則我做主》。而且在其他地方啟動(dòng)Main2Activity時(shí),直接調(diào)用newIntent()傳入相應(yīng)的參數(shù)即可。

如有疑問(wèn)請(qǐng)留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

相關(guān)文章

最新評(píng)論

永顺县| 修文县| 清水县| 大洼县| 柳林县| 深水埗区| 平乡县| 山东| 斗六市| 乐山市| 英山县| 尤溪县| 香港| 华容县| 永嘉县| 荃湾区| 南雄市| 阿拉善左旗| 葵青区| 田东县| 乐平市| 游戏| 湘乡市| 曲沃县| 涟源市| 漠河县| 仁怀市| 威宁| 新丰县| 镇沅| 宾川县| 岢岚县| 淮阳县| 通海县| 林甸县| 邓州市| 遂宁市| 皋兰县| 武川县| 合肥市| 渝北区|